Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
302 Микроконтроллеры AVR от азов программирования... а каждый такой код состоит из двух байтов, в буфер указанного размера можно записать последовательность из 30 кодов. Листинг 5.19 ;## Пример 10 tftf ,## Кодовый замок tftf ;tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt Псевдокоманды управления 1 . include "tn2313def . inc" ; Присоединение файла описаний 2 list ; Включение листинга — --Модуль описаний 3 .def drebL = R1 ; Буфер антидребезга младший байт 4 .def drebH = R2 ; Буфер антидребезга старший байт 5 .def temp = R16 ; Вспомогательный регистр 6 .def data = R17 ; Регистр передачи данных 7 .def flz = R18 ; Флаг задержки 8 .def count = R19 ; Регистр передачи данных 9 .def add re = R20 ; Указатель адреса в EEPROM 10 .def codL = R21 ; Временный буфер кода младший байт 11 def codH = R22 ; Временный буфер кода старший байт ; ------------- -- Определение констант 12 equ bsize = 60 ; Размер буфера для хранения кода 13 equ kzad = 3000 ; Константа, определяющая длительность защитной паузы 14 . equ kandr = 20 ; Константа антидребезга ----------------------------------------------- Резервирование ячеек памяти (SRAM) 15 16 dseg org 0x60 ; Выбираем сегмент ОЗУ ; Устанавливаем текущий адрес сегмента 17 buf г. . byte bsize ; Буфер для приема кода ------------------ Резервирование ячеек памяти (EEPROM) 18 .eseg ; Выбираем сегмент EEPROM 19 • org 0x08 ; Устанавливаем текущий адрес сегмента 20 klen: . byte 1 ; Ячейка для хранения длины кода 21 buf е : . byte bsize ; Буфер для хранения кода ; --------- ------------------ Начало программного кода 22 cseg ; Выбор сегмента программного кода 23 ■ org 0 ; Установка текущего адреса на ноль 24 start • rjmp lnit ; Переход на начало программы 25 reti ; Внешнее прерывание 0 26 reti ; Внешнее прерывание 1 27 reti ; Таймер/счетчик 1, захват 28 rjmp propr ; Таймер/счетчик 1, совпадение, канал А 29 rjmp propr ; Таймер/счетчик 1, прерывание по переполнению 30 reti ; Таймер/счетчик 0, прерывание по переполнению 31 reti ; Прерывание UART прием завершен 32 reti ; Прерывание UART регистр данных пуст 33 reti ; Прерывание UART передача завершена 34 reti ; Прерывание по компаратору 35 reti ; Прерывание по изменению на любом контакте 36 reti ; Таймер/счетчик 1 Совпадение, канал В 37 reti ; Таймер/счетчик 0. Совпадение, канал В 38 reti ; Таймер/счетчик 0. Совпадение, канал А 39 reti ; USI готовность к старту 40 reti , USI Переполнение 41 reti ; EEPROM Готовность 42 reti ; Переполнение охранного таймера * ********** ***************** ********************** Модуль инициализации
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==