Ich bin mir noch immer etwas unsicher, welche Register für welchen Zweck geeignet sind.
Bisher habe ich gelernt, daß die 6 letzten als 16-Bit Zeiger X,Y und Z benutzt werden können. R0/R1 kann als implizites Ergebnis von mul herhalten. Außerdem gibt es einen Unterschied zwischen den ersten und letzten 16 Registern. Warum nimmt man z.B. so gerne R16 als temporäres Register und nicht R25?
Ich habe auch schon gesehen, daß manche Befehle nicht mit den unteren Registern funktionieren, z.B. cpi.
In diesem Beispiel von Oldmax
aus diesem Thema könnte man doch einfach
schreiben. Die ISR wäre dadurch kürzer und Temp bräuchte man nur noch um die Flags zu sichern. Ist das falsch? Also warum wurden hier die Register R4 .. R7 benutzt?
Bisher habe ich gelernt, daß die 6 letzten als 16-Bit Zeiger X,Y und Z benutzt werden können. R0/R1 kann als implizites Ergebnis von mul herhalten. Außerdem gibt es einen Unterschied zwischen den ersten und letzten 16 Registern. Warum nimmt man z.B. so gerne R16 als temporäres Register und nicht R25?
Ich habe auch schon gesehen, daß manche Befehle nicht mit den unteren Registern funktionieren, z.B. cpi.
In diesem Beispiel von Oldmax
Code:
.Def mSek_2= R4 ; Register 4 zählt bis 100msek.
.Def zehntel= R5 ; Register 5 zählt Zehntelsekunden
.Def Sekunde=R6 ; Register 6 zählt Sekunden
.Def Minuten= R7 ; Register 7 zählt Minuten
.Def Temp = r16 ; Allzweckregister
.....
Timer0_ISR:
Push Temp ; Register sichern
In Temp, Sreg
Push Temp
INC mSek_2
LDI Temp, 100
CP mSek, Temp
BRLO End_Timer0_ISR
CLR mSek_2
INC zehntel
LDI Temp, 10
CP zehntel, Temp
BRLO End_Timer0_ISR
Clr zehntel
Inc Sekunde
LDI Temp, 60
CP Sekunde, Temp
BRLO End_Timer0_ISR
Clr Sekunde
Inc Minute
CP Minute, Temp
BRLO End_Timer0_ISR
CLR Minute
End_Timer0_ISR:
POP Temp
Out SReg, Temp
POP Temp
RETI
aus diesem Thema könnte man doch einfach
Code:
.Def zehntel= R17 ; Register 17 zählt Zehntelsekunden
.Def ; entsprechend für die anderen Zähler
...
cpi zehntel, 10
schreiben. Die ISR wäre dadurch kürzer und Temp bräuchte man nur noch um die Flags zu sichern. Ist das falsch? Also warum wurden hier die Register R4 .. R7 benutzt?