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

Шаг 5. Переходим непосредственно к разработке устройств и программ 259 Если вам не понятно, почему мы получим именно такую цепочку, вспомните, что первое число таблицы 4748 в шестнадцатиричном виде выглядит как 0х128С. То есть его старший байт равен 0x12, а младший — 0х8С. Шестнадцатиричное значение второго члена таблицы 4228 равно 0x1084. И так далее. inc _________________________________________________________ Инкремент. Это очень простая команда. Она увеличивает содержи ­ мое одного из регистров общего назначения на единицу. У этой команды всего один параметр — имя регистра, содержимое которого нужно уве ­ личить. Листинг 5.15 , йййййййййййййййййййййййййййййййййййййййййййййй ; йй Пример 8 йй ;йй Сигнальное устройство "Семь нот" йй ; йййййййййййййййййййййййййййййййййййййййййййййй ; ----------------------------------------------- Псевдокоманды управления 1 include "tn2313def inc" ; Присоединение файла описаний 2 .list ; Включение листинга 3 def temp = R16 , Определение регистра передачи данных 4 def count = R17 ; Определение регистра счетчика опроса клавиш , ----------------------------------------------- Начало программного кода 5 . cseg 6 org О 7 start' rjmp init 8 reti 9 reti 10 reti 11 reti 12 reti 13 reti 14 reti 15 reti 16 reti 17 reti 18 reti 19 reti 20 reti 21 reti 22 reti 23 reti 24 reti 25 reti ; Выбор сегмента программного кода ; Установка текущего адреса на ноль ; Переход на начало программы ; Внешнее прерывание О , Внешнее прерывание 1 , Таймер/счетчик 1, захват , Таймер/счетчик 1, совпадение, канал А , Таймер/счетчик 1, прерывание по переполнению , Таймер/счетчик 0, прерывание по переполнению , Прерывание UART прием завершен ; Прерывание UART регистр данных пуст ; Прерывание UART передача завершена , Прерывание по компаратору , Прерывание по изменению на любом контакте ; Таймер/счетчик 1. Совпадение, канал В ; Таймер/счетчик 0 Совпадение, канал В , Таймер/счетчик 0 Совпадение, канал А ; USI готовность к старту ; USI Переполнение ; EEPROM Готовность , Переполнение охранного таймера Модуль инициализации 26 init: ldi temp, RAMEND ; Инициализация стека 27 out SPL, temp Инициализация портов В/В 28 29 ldi out temp, 0x08 DDRB, temp ; Инициализация порта PB 30 ldi temp, 0x00 31 out DDRD, temp ; Инициализация порта PD 32 out PORTB, temp ; Выходное значение порта 33 34 ldi temp, 0x7F out PORTD, temp Включение внутренних резисторов

RkJQdWJsaXNoZXIy MTExODQxMg==