Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 5. Переходим непосредственно к разработке устройств и программ 303 Инициализация портов В/В 43 init . ---------------- Инициализация стека 44 ldi temp, RAMEND , Выбор адреса вершины стека 45 out SPL, temp , Запись его в регистр стека 46 47 48 49 ldi out ldi out temp, 0x18 DDRB, temp temp,0xE7 PORTB, temp Инициализация порта PB 50 51 ldi out temp, 0x7F PORTD, temp Инициализация порта PD 52 ldi temp, 0 DDRD, temp 53 out ------------------------ Инициализация (выключение) компаратора 54 ldi temp, 0x80 ACSR, temp 55 out ------------------------ Инициализация таймера 56 57 ldi out temp, high(kzad ) 0CR1AH, temp , Записываем коэффициент задержки 58 ldi temp, low(kzad ) 59 out 0CR1AL, temp 60 61 ldi out temp, 0x03 TCCR1B, temp , Выбор режима работы таймера Начало основной программы * 62 main ldi codL,0x7F Код для сравнения (младший байт) 63 ldi codH,0x07 Код для сравнения (старший байт) 64 m0 rcall incod Ввод и проверка кода клавиш 65 brne mO Если хоть одна не нажата, продолжаем 66 ml rcall incod Ввод и проверка кода клавиш 67 breq ml Если не одна не нажата, продолжаем 68 m2 ldi ZH, high(bufr) , Установка указателя на начало буфера 69 ldi ZL, low(bufr) 70 clr count Сброс счетчика байт -------------- ц икл ввода кода 71 m3 cli Запрет всех прерываний 72 ldi data,1 Вызываем задержку первого типа 73 rcall wait ; К подпрограмме задержки 74 m5 rcall incod Ввод и проверка кода кнопок 75 st Z+.XL Записываем его в буфер 76 st Z+,XH 77 inc count Увеличение счетчика байтов 78 inc count 79 cpi count, bsize Проверяем, не конец ли буфера 80 brsh m7 Если конец, завершаем ввод кода 81 mov codL, XL Записываем код как старый 82 mov codH, XH 83 ldi data, 2 Вызываем задержку третьего типа 84 rcall wait К подпрограмме задержки 85 m6 rcall incod Ввод и проверка кода кнопок 86 brne m3 Если изменилось, записываем в буфер 87 cpi flz,1 Проверка окончания фазы ввода кода 88 brne m6 ------------------------------------------------------- Опрос состояния тумблера 89 т7 Sbic PINB, 7 , Проверка состояния тумблера 90 rjmp т9 ; К процедуре проверки кода Процедура записи кода
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==