Also so?
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 
			brne regwiederholen		;Ist Ende erreicht?
			ldi tmp, (0<<CS02)      ;JA -> Timer0 abstellen
	   		out TCCR0, tmp

regwiederholen:
	pop tmp
	out SREG, tmp				;SREG wiederholen
	pop  tmp					;tmp wiederholen
	reti
Fällt mir noch ein wenig schwer, so zu denken, aber ich werds denk ich noch hinbekommen.

Mal so nebenbei, beim compilieren bringt er mir folgendes Warnung:
warning: .cseg .db misalignment - padding zero byte
Wenn ich die 0 hinten bei meiner DB rausnehmen, ist die Warnung weg. Soll ich die Warnung einfach ignorieren, oder wann kommt es dann zu Fehlern?