Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 5. Переходим непосредственно к разработке устройств и программ 279 89 cpi fnota, 0x00 ; Проверка, не пауза ли 90 breq ntl ; Если пауза, переходим сразу к задержке 91 mov YL, fnota ; Вычисляем адрес, где хранится 92 ldi ZL, low(tabkd*2) ; коэффициент деления для текущей ноты 93 ldi ZH, high(tabkd*2) ; К подпрограмме 16-разрядного сложения 94 rcall addw 95 1pm temp, Z+ ; Извлекаем мл. разряд КД для текущей ноты 96 1pm tempi, Z ; Извлекаем ст. разряд Кд для текущей ноты 97 out 0CR1AH, tempi ; Записать в старш. часть регистра совпадения 98 out 0CR1AL, temp ; Записать в младш. часть регистра совпадения 99 100 ldi out temp, 0x40 TCCR1A, temp ; Включить звук 101 ntl : rcall wait ; К подпрограмме задержки 102 103 ldi out temp, 0x00 TCCH1A, temp ; Выключить звук 104 ldi dnota, 0 ; Сбрасываем задержку для паузы меаду нотами 105 rcall wait ; Пауза между нотами 106 pop temp ; Завершение подпрограммы 107 pop YL 108 pop ZL 109 pop ZH 110 ret 111 wait: push --------- Подпрограмма формирования задержки ZH 112 push ZL 113 push YH 114 push YL 115 mov YL, dnota ; Вычисляем адрес, где хранится 116 ldi ZL, low(tabz*2) ; нужный коэффициент задержки 117 ldi ZH, high(tabz*2) ; К подпрограмме 16-разрядного сложения 118 rcall addw 119 1pm YL, z+ ; Читаем первый байт коэффициента задержки 120 1pm YH, z ; Читаем второй байт коэффициента задержки 121 clr ZL ; Обнуляем регистровую пару Z 122 clr ZH ; Цикл задержки ; Пустой внутренний цикл 123 w1. ldi loop, 255 124 w2: dec loop 125 brne w2 126 adiw R30, 1 ; Увеличение регистровой пары Z на единицу 127 cp YL, ZL ; Проверка младшего разряда 128 brne w1 129 op YH, ZH ; Проверка старшего разряда 130 brne w1 131 pop YL ; Завершение подпрограммы 132 pop YH 133 pop ZL 134 pop ZH 135 ret Таблица длительности задержек 136 . dw Таблица коэффициентов деления 137 tabkd • dw 138 . dw 139 dw 140 . dw О 4748,4480,4228,3992,3768,3556,3356,3168,2990,2822,2664, 2514 2374,2240,2114.1996,1884.1778,1678,1584,1495,1411,1332, 1257 1187,1120,1057, 99Й, 94^, 88§, 839, 792
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==