Инициализацию "собаки" надо делать один раз вначале программы, примерно вот в этом месте:
Код
RESET:
CLI
LDI TMP1,LOW(RAMEND) ;указатель стека на последний адрес внутренней SRAM
OUT SPL,TMP1
LDI TMP1,HIGH(RAMEND) ;указатель стека на последний адрес внутренней SRAM
ldi tmp1,0b00011111;инициализация внутр. WDT, разрешение работы, период 2,1 сек при питании 5 Вольт.
out wdtcr,tmp1
а прерывание сделать так:
Код
timer1:
wdr
push tmp1
in tmp1,SREG
push tmp1
ldi tmp1,0b00000100;TOIE =1 разрешение прерываний от таймера
out TIMSK,tmp1
ldi tmp1,0x00;откл. таймера1 от выводов процессора
out TCCR1A,tmp1
ldi tmp1,0b00000010;предделитель на 8
out TCCR1B,tmp1
ldi tmp1,tmr1h;зарузка таймера
out TCNT1H,tmp1
ldi tmp1,tmr1l
out TCNT1L,tmp1
pop tmp1
out SREG,tmp1
pop tmp1
reti
Кроме того WDR должно стоять в каждом бесконечном цикле вроде:
Код
metka:
WDR
RJMP metka
Удачи!