В симуляторе (AVR Studio 4) все работает как надо. но в контроллере работает не правильно.
Смысл в том чтобы при нажатии на кнопку 1 (PD0) (кнопка другой ногой висит на минусе) загорался на индикаторе 0, при отпускании- индикатор тух. При нажатии на кн 2 (PD1) на индикаторе загоралась бы 1-при отпускании кн 2 индикатор должен тухнуть.
При прошитой микре при ненажатых кнопках горит 0. При нажатии на кн1 (PD0) загорается 1. при отпускании-горит 0. На кн 2 (PD1) вообще нет реакции. Что сделать? Индикатор с общим катодом.
Вот исходник:
Код
.def temp0 =r16
.def temp1 =r17
.def temp2 =r18
Init:
ser temp0 ;Все выводы порта А выход
out DDRA,temp0
ser temp0 ;Все выводы порта B выход
out DDRB,temp0
ldi temp0,0b11111100 ;Вывод 0 и 1 порта D вход
out DDRD,temp0
ldi temp0,0b00000011 ;подтяжка порта D включена
out PortD,temp0
Start:
ldi temp1,0b11111100 ;0
ldi temp2,0b01100000 ;1
sbic PinD,0 ;Проверяем нажатие кнопки 1
rjmp Loop_3
Loop_1:
sbic PinD,1 ;Проверяем кнопку 2
rjmp Loop_2
ALL_OFF:
clr temp1 ;Гасим все светодиоды
out PortB,temp1
rjmp Start
Loop_2:
out PortB,temp2 ;Зажигаем 1
rjmp Start
Loop_3:
out PortB,temp1 ;Зажигаем 0
rjmp Start
.def temp1 =r17
.def temp2 =r18
Init:
ser temp0 ;Все выводы порта А выход
out DDRA,temp0
ser temp0 ;Все выводы порта B выход
out DDRB,temp0
ldi temp0,0b11111100 ;Вывод 0 и 1 порта D вход
out DDRD,temp0
ldi temp0,0b00000011 ;подтяжка порта D включена
out PortD,temp0
Start:
ldi temp1,0b11111100 ;0
ldi temp2,0b01100000 ;1
sbic PinD,0 ;Проверяем нажатие кнопки 1
rjmp Loop_3
Loop_1:
sbic PinD,1 ;Проверяем кнопку 2
rjmp Loop_2
ALL_OFF:
clr temp1 ;Гасим все светодиоды
out PortB,temp1
rjmp Start
Loop_2:
out PortB,temp2 ;Зажигаем 1
rjmp Start
Loop_3:
out PortB,temp1 ;Зажигаем 0
rjmp Start
почему в симуляторе (AVR Studio) работает как надо, а в реале как описано выше?