So, wenn ich das Umschalten von PB2 in die Interrouptroutine mache, hör ich kein Piepen mehr. Nur wenn ich das Umschalten so mache, wie wir das bei dem "Lichtschalter" gemacht haben.
Hier der Code:
Code:
.include "m8def.inc"

.equ time0_1 = 256-2			;Damit wird der Timer vorgeladen
.equ Summer = PB2				;Summer an B.2
.def tmp = r16					;Mein Universallregister
.def statusreg = r17			;Mein Statusregister
;.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, Summer				;B.2 als Ausgang
	sbi PORTB, Summer				;B.2 auf HIGH stellen

	;Timer Register werden belegt, hier Timer 0
	ldi tmp, (1<<CS02)				;prescaler ist 512
	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, time0_1				;Hier wird der Timmer vorgelaen und zwar mit 255-90
	out TCNT0, tmp					;Er läuft 90 mal durch, bevor ein Interrupt auftritt
	sei								;Interrupts zulassen

loop:
	rjmp loop					;immer wieder zu "loop:" springen

pruefZaehler:
	in statusreg, SREG			;SREG sichern

	sbis PINB, Summer			;überspringe, wenn B.2 = 0 ist
	cbi PORTB, Summer			;wenn B.2 = 1 ist, dann auf 0 setzen
	sbic PINB, Summer			;überspringe, wenn B.2 = 1 ist
	sbi PORTB, Summer			;wenn B.2 = 0 ist, dann auf 1 setzen

	ldi tmp, time0_1			;Hier wird der Timer vorgeladen
	out TCNT0, tmp
	out SREG, statusreg			;SREG wiederholen
	reti						;wieder zurück, wo du hergekommen bist
Finds irgendwie komisch :/