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

Шаг 5. Переходим непосредственно к разработке устройств и программ 277 шое количество значений и вы собираетесь разбить все параметры на несколько строк и записать каждую строку при помощи директивы db, то во всех строках, кроме последней, вы должны оставить четное коли ­ чество параметров. Листинг 5.17 'ШШШШШШШШШШШШШНШШ , ## Пример 9 ИИ ; йй Музыкальная шкатулка ПИ , йййййййййййййййййййййййййййййййййййййййййййййй Псевдокоманды управления 1 2 include list "tn2313def inc" , Присоединение файла описаний ; Включение листинга 3 def loopl = R0 ; Три ячейки для процедуры задержки 4 def loop2 = R1 5 def ІоорЗ = R21 6 .def temp = R16 ; Вспомогательный регистр 7 def tempi = R17 ; Второй вспомогательный регистр 8 .def count = R17 ; Определение регистра счетчика опроса клавиш 9 .def fnota = R19 ; Частота текущей ноты 10 def dnota = R20 ; Длительность текущей ноты Начало программного кода 11 cseg 12 org 0 13 start rjmp init 14 reti 15 reti 16 reti 17 reti 18 reti 19 reti 20 reti 21 reti 22 reti 23 reti 24 reti 25 reti 26 reti 27 reti 28 reti 29 reti 30 reti 31 reti , Выбор сегмента программного кода , Установка текущего адреса на ноль , Переход на начало программы , Внешнее прерывание О ; Внешнее прерывание 1 , Таймер/счетчик 1, захват , Таймер/счетчик 1, совпадение, канал А , Таймер/счетчик 1, прерывание по переполнению ; Таймер/счетчик 0, прерывание по переполнению ; Прерывание UART прием завершен ; Прерывание UART регистр данных пуст ; Прерывание UART передача завершена ; Прерывание по компаратору ; Прерывание по изменению на любом контакте ; Таимер/счетчик 1. Совпадение, канал В ; Таймер/счетчик 0. Совпадение, канал В ; Таймер/счетчик 0. Совпадение, канал А ; USI готовность к старту , USI Переполнение , EEPROM Готовность : Переполнение охранного таймера Модуль инициализации init • , ------------------------------------------------- Инициализация стека 32 33 34 35 36 39 40 ldi temp, RAMEND ; Инициализация стека out SPL, temp ---------------------------- Инициализация портов В/В ldi temp, 0x08 , Инициализация порта РВ out PORTB, temp out DDRB, temp ldi temp, 0x7F ; Инициализация порта PD out PORTD, temp ldi temp, 0x00 out DDRD, temp ------------------------------ Инициализация (выключение) компаратора ldi temp, 0x80 out ACSR, temp Инициализация таймеоа Т1

RkJQdWJsaXNoZXIy MTExODQxMg==