Ja, hab vorher in C, genauer gesagt in C++ programmiert.
Also muss ich das dann so machen? Denn eine Sprungmarke brauch ich ja, damit ich den Timer dann abstelle, wenn er das Ende erreicht hat, oder?
Code:
pruefSek:
	push tmp					;tmp sichern
	in tmp, SREG
	push tmp					;SREG sichern
		ldi tmp, HIGH(time1)	;Für den Timer1 (16Bit) benötigen
		out	TCNT1H, tmp			;wir 2 Register, in denen wir den Wert
		ldi tmp, LOW(time1)		;für die 1 Sekunde speichern ->
		out TCNT1L, tmp			;"TCNT1H" und TCNT2L"
			lpm                  		;Daten von tonleiter1: holen 
		   	adiw ZL,1            		;Z um 1 erhöhen, nächstes Byte 
		   	ldi tmp, LOW  ((tonleiter1 * 2) + daten_laenge)	;vergleiche LOW-Byte 
		   	cp ZL, tmp 
			ldi tmp, HIGH ((tonleiter1 * 2) + daten_laenge)	;vergleiche HIGH-Byte 
			cpc ZH, tmp 
			breq endeTon         		;springe zu "endeTon:", wenn letztes Byte ausgelesen
	pop tmp
	out SREG, tmp				;SREG wiederholen
	pop  tmp					;tmp wiederholen
	reti						;Spring wieder dahin, wo du hergekommen bist

endeTon:
		ldi tmp, (0<<CS02)         	;Timer stoppen 
	   	out TCCR0, tmp
	pop tmp
	out SREG, tmp				;SREG wiederholen
	pop  tmp					;tmp wiederholen
	reti
Doch dann hab ich ja 3 Zeilen doppelt. Die 3 Zeilen zum Wiederholen der Register vom Stack. Ist also auch nicht die beste Möglichkeit.