ВУЗ:
Составители:
- назначение имен длительностям и частотам;
.equ t16 =0b00000000
.equ t8 =0b00100000
.equ t8h =0b01000000
.equ t4 =0b01100000
.equ t4h =0b10000000
.equ t2 =0b10100000
.equ t2h =0b11000000
.equ t1 =0b11100000
.equ sol_1 =0b00000000
.equ soldi_1=0b00000001
.equ labe_1 =0b00000001
.equ la_1 =0b00000010
.equ ladi_1 =0b00000011
.equ sibe_1 =0b00000011
.equ si_1 =0b00000100
- назначение входов и выходов;
- включение режима СТС таймера Т/С1 (сброс при совпадении с константой).
- установка частоты f=f
t
- установка прерываний по INT0.
4. Установка адреса первой ноты.
Используется команда LPM. Первая нота записана по адресу $90 или 144
10
.
Ldi ZH,high(144<<1) ; адрес первой ноты сдвигаем влево на один разряд и
записываем в Z.
Ldi ZL,low(144<<1)
5. Чтение нот
Start1:
Lpm tmp,Z ; считываем константу по адресу, указанному в регистре Z
(144) в регистр tmp
Mov NFreq,tmp ; скопируем ноту в регистр Nfreq и в регистр r22
Mov r22,tmp
6. а. Выделение кода длительности ноты
andi tmp,0b11100000 ; маскируем код длительности
swap tmp ; перестановка полубайтов
lsr tmp ; логический сдвиг вправо (например, (00000101)
6. б. Чтение константы длительности
Константа расположена в EEPROM по адресу, начинающемуся с 0х40 (64
10
).
Clr tmp
83
Страницы
- « первая
- ‹ предыдущая
- …
- 81
- 82
- 83
- 84
- 85
- …
- следующая ›
- последняя »