Das hier ist mein aktueller Code:
Code:
.include "m8def.inc"

.equ time = 255 -254		;Damit wird der Timer vorgeladen
.equ sperre = 7
.equ LED = PB2				;LED an B.2
.def tmp = r16				;Mein Universallregister
.def status = r17			;Mein Statusregister, ob LED an oder aus ist
.def zaehler = r18			;Mein Zählregister

.org 0x000
	rjmp reset				;Interruptvektor "reset:"

.org OVF0addr
	rjmp pruefZaehler		;Interruptvektor für Timer0 Überlauf, hier springt
							;das Programm hin, wenn der Timer überläuft

reset:
	;Stack einrichten
	ldi tmp, HIGH(RAMEND)		;HIGH-Byte der obersten RAM-Adresse
	out SPH, tmp
	ldi tmp, LOW(RAMEND)		;LOW-Byte der obersten RAM-Adresse
	out SPL, tmp

	sbi DDRB, LED				;B.2 als Ausgang
	cbi PORTB, LED				;B.2 auf LOW stellen -> LED aus am Anfang
	cbr status, (1<<sperre)		;Statusregister r17.7 = 0 setzen (LED aus)

	;Timer Register werden belegt, hier Timer 0
	ldi tmp, (1<<CS02) | (1<<CS00)	;prescaler ist 1024
	out TCCR0, tmp					;Register TCCR0 ist für den Prescaller zuständig
	ldi tmp, (1<<TOIE0)				;Hier werden Interrupts nach Timer0 Überlauf eingeschaltet
	out TIMSK, tmp					;Register TIMSK ist dafür zuständig
	ldi tmp, time					;Hier wird der Timmer vorgelaen und zwar mit 255-254
	out TCNT0, tmp					;Er läuft 254 mal durch, bevor ein Interrupt auftritt
	sei								;Interrupts zulassen

loop:
	rjmp loop					;Immer wieder selbst aufrufen -> Endlosschleife

pruefZaehler:
	inc zaehler					;Zählregister um 1 erhöhen
	cpi zaehler, 0b01000001		;Wenn Zählregister = 65 ist
	breq zeitum					;spring zu "zeitum:" wenn zaehler = 65
	reti

zeitum:
	clr zaehler					;Zählregister auf 0 setzen
	push tmp					;Rette Universallregister
	in tmp, SREG				;Rette Statusregister
	push tmp
	sbrs status, sperre			;überspringe, wenn r17.7 = 1 ist (LED an?)
	rjmp zeitum0				;zu "zeitum0:" springen
	sbrc status, sperre			;überspringe, wenn r17.7 = 0 ist (LED aus?)
	rjmp zeitum1				;zu "zeitum1:" springen

zeitum0:
	sbr status, (1<<sperre)		;r17.7 = 1 setzen (LED an)
	sbi PORTB, LED				;B.2 = 1 setzen -> LED an
	rjmp zeitum2

zeitum1:
	cbr status, (1<<sperre)		;r17.7 = 0 setzen (LED aus)
	cbi PORTB, LED				;B.2 auf 0 setzen -> LED aus
	rjmp zeitum2

zeitum2:
	pop tmp						;stelle SREG wieder her
	out SREG, tmp
	pop tmp						;stelle Universalregister wieder her
	reti						;die Interrupt-Routine wird verlassen
								;und es wird weiter im Hauptprogramm gearbeitet
Hab nur das "reti" vorhin eingefügt.