So,

nun blinkt es zwar, aber nicht im Sekundentakt. Hier mal der 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, 0b01000010		;Wenn Zählregister = 65 ist
	breq zeitum					;spring zu "zeitum:" wenn zaehler = 65

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 auch schon versucht, diese Zeile hier "cpi zaehler, 0b01000010" durch "cpi zaehler, 0b11111111" das hier zu ersetzen. Aber blinkt immer noch so schnell.

Aber eigentlich müsste 65x richtig sein. Denn
4MHz / 1024 / 254 = 65 Hz = ca. 15,4ms
Und bei 1 Sekunde muss ich 65 mal die 15,4ms ablaufen lassen.

Hab eben noch versucht, nach "breq zeitum" ein "reti" einzufügen. Nun blinkt er sehr viel langsamer, aber langsamer als 1 Sekunde. Wenn ich nun anstelle von "cpi zaehler, 0b01000010" das hier eintrage: "cpi zaehler, 0b00010000", dann isses knapp ne Sekunde, die er dann immer blinkt. Aber ist ja bestimmt nicht eine Sekunde, sondern auf gut Glück eben, aber es muss ja auch rechnerisch gehen.

Bin denk ich schonmal aufm sehr guten Wege. Nur der letzte "Feinschliff" fehlt eben noch Bild  

Gruß
Thomas