Только начал изучать AVR, решил собрать на ATmega8 схему включения-выключения светодиода одной кнопкой(Нажимаем на кнопку, она коротит одну из ножек контроллера на землю, светодиод припаянный к другой ножке тухнет, нажимаем еще раз - светодиод загорается). На ножке PB0 - светодиод, на ножке PB1 - кнопка.
Код
.include "m8def.inc"
.org 0
RJMP Reset
Reset:
LDI R16,Low(RAMEND)
OUT SPL,R16
LDI R16,High(RAMEND)
OUT SPH,R16
LDI R16,1<<DDB0
OUT DDRB,R16
LDI R16,1<<PORTB1
OUT PORTB, R16
Start:
IN R16,PINB
SBRS R16,1
RCALL Change
RJMP Start
Change:
LDI R17,0x3
EOR R16,R17
OUT PORTB,R16
RET
1. Подскажите, если не сложно, какие явные косяки в коде имеются (чувствую, что они там точно есть

).
2. Не всегда срабатывает переключение светодиода, иногда происходит так: светодиод светится, я нажимаю кнопку где-то на секунду, светодиод в это время светится вполнакала, отпускаю кнопку и светодиод снова светится, хотя должен был погаснуть. Или светодиод не светится, я нажимаю кнопку, светодиод начинает светится вполнакала, отпускаю кнопку и светодиод снова не светится. А иногда все работает нормально (примерно 50 на 50). Из-за чего это может быть?
Сообщение отредактировал Игорек - May 1 2012, 19:10