Hallo zusammen, ich hoffe ihr könnt mir helfen.

Ich fange gerade an mich mit den AVR's "anzufreunden" und hab nachfolgendes Programm geschrieben (Der meiste Teil stammt aus dem Buch AVR-RISC Mikrocontroller). Eigentlich soll es mit 2Hz ein Wechselblinklicht sein. Im Simulator funktioniert das ganze auch, aber wenn ich das Prog im Chip habe passiert rein gar nix, ausser das die LED an Port PB1 leuchtet.

Das ganze stimmt mich ziemlich ratlos und für eine kleine Hilfe wäre ich sehr dankbar.


Code:
.INCLUDE "C:\ATMEL\ASM\APPNOTES\2313def.inc"

.def	 Stat = R15		;Zwischenspeicher für SREG
.def	 Icnt = R16		;Interruptzähler
.def	Blink = R17		;Statusregister Blinken
.def	 Temp = R18		;Arbeitsregister Blinkroutine
.def	 Work = R19		;Arbeitsregister Hauptprogramm

.equ	Time = 80000 / 1024	;Zählerwert für Interrupt

	rjmp Main		;nach Reset zum Hauptprogramm
	reti			;Externer Interrupt 0 nicht verwendet
	reti			;Externer Interrupt 1 nicht verwendet
	reti			;T/C1 Capture Interrupt nicht verwendet
	reti			;T/C1 Compare A Interrupt nicht verwendet
	reti			;T/C1 Compare B Interrupt nicht verwendet
	reti			;T/C1 Überlauf Interrupt nicht verwendet


;= Blinkroutine
Timer0:				;Timer0 Überlauf Interrupt
	in Stat, SREG		;Flags des Hauptprogramms retten
	
	dec Icnt		;Zähler -1
	breq D1			;Sprung wenn gleich 0
	rjmp IntEnd		;zum Interrupt Ende

D1:	
	ldi Icnt, 25		;Programmzähler neu laden
	
	sbrc Blink, 0		;welche LED ist gerade an?
	rjmp Led1
	
	ldi Blink, 0b00000001
	rjmp IntEnd

Led1:
	ldi Blink, 0b00000010
	
IntEnd:
	out PORTB, Blink	;LED Stellung ausgeben
	
	ldi Temp, -Time
	out TCNT0, Temp		;T/C0 nachladen
	
	out SREG, Stat		;Flags des Hauptprogramms wiederherstellen
	reti




;= Hauptprogramm 
Main:    
	ldi Work, High(Ramend)
	out sph, Work
	ldi Work, Low(Ramend)
	out spl, Work		;Stack initialisiert
	
	ldi Work, $FF
	out DDRB, Work		;alle Bits von Port B sind Ausgang
	
	ldi Blink, 0b00000001
	out PortB, Blink	;LED1 einschalten
	
	ldi Icnt, 25		;Programmzähler setzen

	ldi Work, $02		;der Interrupt bei T/C0 Überlauf
	out TIMSK, Work		;wird durch TOIE0 freigegeben
	ldi Work, -Time		;Startwert für Timer0
	out TCNT0, Work		;ausgeben
	ldi Work, $05		;kein Vorteiler für T/C0
	out TCCR0, Work		;ausgeben und damit T/C0 starten
	sei			;Interrupts global freigeben

Wait:				;Warteschleife
	nop
	rjmp Wait