ATMEGA8 не работает кнопка
Добавлено: Вт сен 11, 2012 23:48:07
Здравствуйте. Пытаюсь освоить программирование микроконтроллеров, и начинаю с простейшего. Не могу написать простейшую программу ) Суть простая - по нажатии кнопки включать и выключать диод. Вот код который не работает
На PB0 светодио, на PB1 - кнопка. Суть в том, что цикл "OFF_LOOP:" почему-то не срабатывает, и программа сразу прыгает дальше. Дебаггер показывает, что пин BUTTON_ON занулён, но я же подтянул кнопку, следовательно пин должен был стать 1 ! А вручную PINB естественно нельзя установить. Голова рушиться, не могу понять в чем дело, прошу помощи!
Код: Выделить всё
.include "m8def.inc" ; Header files
.def tempp=r20
.def temp=r16
.equ BUTTON_ON = 0b00000001
;********************************************************************
; Инициализация контроллера
;********************************************************************
.org 0x0000 ; Вектор сброса
rjmp reset ; процессора
;********************************************************************
reset:
;********************************************************************
; Настройка портов
;********************************************************************
ldi temp, 0b00000001 ; Порты PВ на ввод кроме нулевого
out DDRB, temp ;
ldi temp, 0b00000010 ; Подтягивание кнопки (PB1)
out PORTB, temp ;
ldi tempp, 0b00000010 ; заготовка для моргания светодиодом
nop
nop
;********************************************************************
; Основная программа
;********************************************************************
OFF_LOOP:
sbic PINB, BUTTON_ON ; ждать когда нажмется кнопка
rjmp OFF_LOOP
MAIN_LOOP:
out portB,tempp ; заготовка для моргания светодиодом
rjmp OFF_LOOP