Белов, А.В. Микроконтроллеры 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). Но без изменений все же не обошлось. Во-первых, пришлось переименовать некоторые метки, так как в про грамме электронного замка были использованы метки с теми же име нами. Второе изменение связано с условием выхода из процедуры вос произведения мелодии. В исходной программе для этого проверялось
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==