Danke, dann schreib' ich das Programm um.

edit: Habe Schwierigkeiten, das zu realisieren. Bin eben noch sehr unerfahren, was den Stack angeht.
Also ein Flowchart habe ich schonmal angefertigt. Mit dem Quellcode klappt das alleridngs noch nicht.

Bild hier  

Der uC befindet sich zunächst in einer Endlosschleife. Im Interrupthandler vom Timer0 (Label timer) wird dann mit sbic abgefragt, ob die LED an ist. Wenn nicht, springt der uC zum Label LEDon. Dort wird die LED angemacht. Danach kehrt der uC ja aber wieder zurück zum Label timer. Dort steht leider der Befehl sbis, nach welchem der Sprung zu LEDoff steht.

Wie verhindere ich also, dass der uC nicht nach LEDoff springt, wenn er im selben Durchlauf schon in LEDon war?

edit²: Habe das jetzt so gelöst.
Code:
include "m8def.inc"
 
.def temp = r16
.def oldStatus = r17
 
.org 0x000
	rjmp main				; Reset Handler

.org OVF0addr 
	rjmp timer				; Timer0 Handler			
 
 
main:                        
 
	ldi temp, HIGH(RAMEND)
	out SPH, temp
	ldi temp, LOW(RAMEND)
	out SPL, temp

	sbi DDRD, PD5
	cbi DDRD, PD2
	
	ldi temp, 0b00000001
	out TCCR0, temp	

	ldi temp, 0b00000001
	out TIMSK, temp

	sei          
	
	cbi PORTD, PD5
 
loop:
	rjmp loop             
 
timer:
	sbic PORTD, PD5
	rjmp LEDoff
	sbi PORTD, PD5
	reti
	
LEDoff:
	cbi PORTD, PD5
	reti
Ist das programmiertechnisch und stilistisch richtig?