Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

334 Микроконтроллеры AVR от азов программирования... жается. При обнаружении факта нажатия одной или нескольких кнопок набора кода управление переходит к строке 76. С этой строки программа электронного замка не имеет отличий от оригинала. Вся оставшаяся часть программы занимает строки 76 — 127. Вспомогательные процедуры занимают строки 128 — 185. Программа музыкального звонка расположена в строках 186 — 295. Ее пришлось немного доработать. Прежде всего, из программы был исклю ­ чен модуль опроса клавиатуры, который в программе «Музыкальная шкатулка» (листинг 5.17) по нажатию одной из кнопок определял номер воспроизводимой мелодии. Вместо этой процедуры в программу вве ­ дена другая, которая использует в качестве номера мелодии содержимое ячейки melod. При каждом нажатии кнопки номер мелодии увеличива ­ ется на единицу. Если полученный таким образом номер превысит общее количество мелодий, то он сбрасывается в ноль, а подсчет мелодий начинается сна ­ чала. В новой шкатулке используется не семь, а восемь мелодий. Других принципиальных изменений музыкальная программа не имеет. Начинается музыкальная программа с модуля инициализации тай ­ мера (строки 186 — 189). В данном случае таймер настраивается на нужды программы воспроизведения звука. В строках 190 — 195 располо ­ жен упомянутый выше модуль, определяющий номер мелодии. В строке 190 текущее значение номера мелодии читается из ячейки памяти melod и помещается в регистр count. В строке 191 номер мелодии увеличивается на единицу. В строке 192 полученный таким образом новый номер мелодии сравнивается с чис ­ лом 8. Если номер меньше восьми, то оператор условного перехода в строке 193 передает управление по метке km2, и строка 194 не выпол ­ няется. Если номер мелодии равен или больше восьми, то выполняется строка 194, где номеру мелодии присваивается нулевое значение. В строке 195 новый номер мелодии записывается обратно в ячейку памяти melod. Там он хранится до следующего нажатия кнопки звонка. Кроме того, номер мелодии остается также и в регистре count. Именно в этот регистр помещала номер мелодии процедура сканирования клавиа ­ туры в программе «музыкальная шкатулка». После определения номера мелодии управление переходит к строке 196. В этой строке начинается уже известная нам программа вос ­ произведения мелодий. Она почти без изменений перенесена из про ­ граммы (листинг 5.17). Но без изменений все же не обошлось. Во-первых, пришлось переименовать некоторые метки, так как в про ­ грамме электронного замка были использованы метки с теми же име ­ нами. Второе изменение связано с условием выхода из процедуры вос ­ произведения мелодии. В исходной программе для этого проверялось

RkJQdWJsaXNoZXIy MTExODQxMg==