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?
Lesezeichen