ВУЗ:
Составители:
Subi tmp,-64 ; прибавляем к tmp начальный адрес 64 и по этому адресу чита-
ем константу из EEPROM:
Out eear,TMP ; загрузка адреса в адресный регистр
Sbi EECR,EERE ; установить разряд EERE в регистре EECR (для чтения)
Sbi EECR,EERE ; так как чтение производится за четыре такта.
In NTim,EEDR ; константу запишем в регистр NTIM
Mov r19,NTim ; скопируем константу в R19
7. Выделение кода частоты ноты
Andi NFreq,0b00011111 ; маскируем частоту
8. Сравнение кода частоты с числом 31
Cpi NFreq,31
Breq pause ; если NFreq=31, то переходим на подпрограмму Pause
9а.Чтение из EEPROM константы частоты
Здесь мы должны адрес умножить на 2, так как константы состоят из 2-х байт
Lsl NFreq ; сдвиг влево (умножение на 2)
Out EEAR,NFreq ; загрузка адреса в адресный регистр
Sbi EECR,EERE ; установить разряд EERE в регистре EECR
Sbi EECR,EERE
In XL,EEDR ; младший байт записываем в регистр XL
Inc Nfreq ; увеличиваем на 1 адрес NFreq
Out EEAR,NFreq
Sbi EECR,EERE
Sbi EECR,EERE
In XH,EEDR,EEDR ; старший байт записываем в регистр XH
9б. Загрузка константы частоты в регистр сравнения
Out OCR1AH,XH
Out OCR1AL,XL
1. Формирование длительности ноты и воспроизведение ее
Ldi tmp,0b01000000 ; включение режима переключения вывода OC1A
Out TCCR1A,tmp
Time1:
Rcall Time_125ms ; вызов подпрограммы задержки 125 мс
Dec NTim ; в NTim загружена константа длительности
Brne Time1 ; когда NTim станет равным нулю, то выполняем програм-
84
Страницы
- « первая
- ‹ предыдущая
- …
- 82
- 83
- 84
- 85
- 86
- …
- следующая ›
- последняя »