Код
.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
.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). Из-за чего это может быть?