Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
336 Микроконтроллеры AVR от азов программирования... ----------------------------------------------- Резервирование ячеек памяти (SRAM) 19 .dseg ; Выбираем сегмент ОЗУ 20 org 0x60 ; Устанавливаем текущий адрес сегмента 21 bufr: . byte bsize ; Буфер для приема кода 22 melod - . byte 1 ; Номер текущей мелодии — -- Резервирование ячеек памяти (EEPR0M) 23 .eseg ; Выбираем сегмент EEPROM .org 0x08 ; Устанавливаем текущий адрес сегмента 24 klen- byte 1 ; Ячейка для хранения длины кода 25 bufe- byte bsize , Буфер для хранения кода -- Начало программного кода 26 .cseg ; Выбор сегмента программного кода 27 org 0 ; Установка текущего адреса на ноль 28 start : rjmp init ; Переход на начало программы 29 reti , Внешнее прерывание 0 30 reti ; Внешнее прерывание 1 31 reti ; Таймер/счетчик 1, захват 32 rjmp propr ; Таймер/счетчик 1, совпадение, канал А 33 rjmp propr ; Таймер/счетчик 1, прерывание по переполнению 34 reti ; Таймер/счетчик 0, прерывание по переполнению 35 reti , Прерывание UART прием завершен 36 reti ; Прерывание UART регистр данных пуст 37 reti ; Прерывание UART передача завершена 38 reti , Прерывание по компаратору 39 reti ; Прерывание по изменению на любом контакте 40 reti ; Таймер/счетчик 1. Совпадение, канал В 41 reti , Таймер/счетчик 0. Совпадение, канал В 42 reti ; Таймер/счетчик 0. Совпадение, канал А 43 reti ; USI готовность к старту 44 reti , USI Переполнение 45 reti , EEPROM Готовность 46 reti ; Переполнение охранного таймера ;******* ******* ********* ******************************* Модуль инициализации * 4...... ******* ********* ******************************* init : ■ ------------------------------------------------- Инициализация стека 47 48 ldi out temp, RAMEND SPL, temp Выбор адреса вершины стека Запись его в регистр стека ------------------------------------------------- Инициализация портов В/В 49 ldi temp, 0x18 , Инициализация порта PB 50 out DDRB, temp 51 ldi temp,0xE7 52 out PORTB, temp 53 ldi temp, 0x7F ; Инициализация порта PD 54 out PORTD, temp 55 ldi temp, 0 56 out DDRD, temp --------------------------------------------------- Инициализация (выключение) компаратора 57 58 59 60 ldi temp, 0x80 out ACSR, temp ------------------------------------- Номер мелодии ldi temp, 0 sts melod.temp Сбрасываем в ноль
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==