При нажатии на кнопку PB0, программа должна изменять число, отображаемое на ЖК-индикаторе. Но обрабатывается только первое нажатие, число меняется с 0 на 1 и все, на дальнейшие нажатия она не реагирует. Почему?
Код:
; ****************************** ; Автор: ххх * ; Дата: 11.06.2012 * ; Версия: 0.1 * ; Имя файла: Indicator * ; Для AVR: ATmega8L-8PU * ; Тактовая частота: 4 МГц * ; ****************************** ; Выполняемые функции: Управление семисегментным ЖК-индикатором, функция подавления дребезга контактов ; ============ .device ATmega8 .nolist .include "C:\Program Files\Atmel\AVR Studio 5.0\avrassembler\include\m8def.inc" .list ; ============ ; Блок объявлений .def temp = r16 .def counter = r17 .def delay1 = r16 ; так надо .def delay2 = r18 .def delay3 = r19 ; ============ ; Начало программы rjmp Init ; ============ ; Подпрограммы Debounce: ; инициализируем регистры счетчика числом 0x13880 (для четности добавляем 0: 0х013880) ldi delay1, 0x80 ; ldi delay2, 0x38 ; ldi delay3, 0x01 ;
Loop: ; формируем задержку subi delay1, 1 ; subi delay2, 0 ; subi delay3, 0 ; brcc Loop ; ret ; ============ Init: ; Тело программы ; ========== ; Подблок инициализации стека ldi temp, low(ramend) ; out spl, temp ; ldi temp, high(ramend) ; out sph, temp ; ; ==========
ser temp ; out DDRD, temp ; выходы ldi temp, 0b11111110 ; out DDRB, temp ; PB0 - вход, остальные не используются
ldi r20, 0b01111110 ; код для цифры "0" out PortD, temp ; показать цифру "0" ldi temp, 0b00000001 ; out PortB, temp ; PB0 - подтяжка, остальные не используются
Спасибо большое, без вас я бы не смог разобраться. Я еще не умею правильно писать программы. На самом деле, в книжке ошибки не было. Это моя вина, я не увидел этого, по своей не внимательности не правильно написал. Просто эти команды так похожи... А книжка называется: Джон Мортон. Микроконтроллеры AVR. Вводный курс, можете убедиться сами, ошибки там не было. Извините...
ChipKiller посмотрите, пожалуйста, там мой последний пост.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения