Просьба дальше оформлять код нормально, с помощью <asm> </asm>. См. рекомендации 1. Нормальные пацаны не ленятся ставить адреса векторов прерываний. NOP не в почёте.
.org 0
jmp RESET ; Reset Handler
.org 0x0002
jmp EXT_INT0 ; IRQ0 Handler
Что за цирк с NOP? то есть то нет?
nop
nop;jmp PCINT0 ; PCINT0 Handler
nop
jmp EXT_PCINT1 ; PCINT1 Handler ; Куда делся NOP?????????
jmp EXT_PCINT2 ; PCINT2 Handler
jmp EXT_PCINT3 ; PCINT3 Handler
nop;jmp WDT ; Watchdog Timeout Handler
nop
Все вектора прерываний до 0x0036 включительно рекомендую прописать, неиспользуемые поставить RETI
.org 0x0080 ; Свободная область
RESET:
; cli
ldi r16, high(RAMEND) ; Main program start
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16, low(RAMEND)
out SPL,r16
; только после инициализации STACK можно писать остальной код
2. Слишком много кода для отладки. Лучше заменить все обработчики прерываний на RETI, кроме одного, и сократить код до минимального.
Let's come together right now !