PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : r0 - r15



Philipp83
29.03.2006, 16:53
Hallo,

Da ich hier immer auf nette Hilfe gestoßen bin, noch eine kleine Frage:

wofür sind eigentlich die Register r0 - r15 ?
kann ich diese als normlae Register benutzen wenn sie nur "langsam" beschrieben werden (so schnell wie ein mensch tasten drücken kann :-)?

sind es also normale aber langsame register, oder wofür sind diese?


DANKESCHÖN!!!


mfg, Philipp

izaseba
29.03.2006, 17:07
Hallo,

Als erstes möchte ich auf diese (http://www.avr-asm-tutorial.net/avr_de/beginner/index.html)
Seite verweisen, vielleicht kennst Du sie noch nicht.

Regirter R0 wird in Verbindung mit Z-Zeiger und dem Befehl lpm benutzt, sehr nützlich.
Die anderen R1-R15 kannst Du ganz normal benutzen, nur mit ldi kann man sie nicht direkt beschreiben, es gibt noch ein paar Beschränkungen, die kannst Du in dem oberen Link nachlesen, aber sonst sind das ganz normale Register...

Ich benutze sie gerne für ADC Ergebnise in R1,ADCL z.B.

Gruß Sebastian

Philipp83
29.03.2006, 17:18
Hmm... habe ich das richtig verstanden, das ich r0 - r15 nicht mit einer Konstante beschreiben kann?

Danke für diese Seite, aber so richtig verständlich ist dort nicht beschrieben was ich damit machen kann.

izaseba
29.03.2006, 17:29
sicher kannst Du sie Beschreiben, mit was Du willst, nur nicht direkt mit ldi,

z.B.


ldi R16,0xFA
mov R1,R16

Jetzt steht 0xFa im Register R1



dec R1

Jetzt steht 0xF9 im R1


out PORTB,R1


Inhalt von R1 wird in PORTB geschrieben, klar ?
Nur ldi,andi,cpi,cbr,sbci,sbr,ser kannst Du mit R0-R15 nicht verwenden am
sonsten geht alles, sie sind auch nicht langsamer, oder schneller.

Gruß Sebastian

Philipp83
29.03.2006, 17:37
Achso, alles klar!

Das hilft mir auf jeden fall weiter!

hätte nämlich mit den r16-31 zu wenige zur Verfügung :-)

Vielen Dank und einen schönen Tag wünsche ich noch.

Bernhard.Erfurt
30.03.2006, 15:23
Hier mal ein kleines Bsp von mir, man erkennt, die unteren Register werden für "Variablen" verwendet z.B. für eine Sekunde und die oberen
zum rechnen, denn damit geht's einfacher

.def ss = r3
.def mm = r4
.def hh = r5
.def TAG = r6
.def MONAT = r7
.def JAHR = r8
.def MINUTE_ENDE=r9
.def DCF_gueltig=r10
.def ZEIT_START= r11
.def ZEIT_STOP= r13
.def MENUE_ZAHL = r14
.def MENUE_TIMER = r15

.def temp = r16
.def temp1 = r17
.def temp2 = r18
.def temp3 = r19
.def temp4 = r20
.def temp5 = r21
.def temp6 = r22
.def temp7 = r23
.def temp8 = r24
.def temp9 = r25