Guten Tag Ich arbeite mich seit ein paar Wochen in die Materie AVR ein da blutiger Anfänger. Mir ist aufgefallen das bei jedem Tutorial mit Register r16 begonnen wird und dann rauf gezählt wird d.h. r16, r17, r18 usw.! Warum werden die Register r0 bis r15 nicht verwendet? Gibt es so ne Art Leitfaden wann man welches Register verwendet? Im Netz habe ich leider nichts gefunden!
das kommt daher, dass man erst ab r16 mit Konstanten direkt arbeiten kann. Das betrifft die Befehle ldi,subi,andi,ori u.ä.. Ein Befehl ldi r2, 45 z.B. ist also nicht möglich. Weitere Besonderheiten betreffen das r0 (wird automatisch als Zieladresse benutzt bei LPM) und die Indexeregister X,Y,Z.
Guck mal bei Atmel auf die Homepage, da gibt es das Instruction Set Document. Für jeden Befehl wird angegeben mit welchen registern du es benutzen kannst. http://www.atmel.com/dyn/resources/prod_documents/DOC0856.PDF
Grob gesagt, alle Befehle mit einem "I" am Ende (LDI, ORI, SUBI usw.) gehen nur mit R16..R31. Dabei ist zu beachten, daß SBR CBR verkappte ORI ANDI Befehle sind. Peter
Sorry, Link muss richtig heißen http://www.avr-asm-tutorial.net/avr_de/beginner/register.html#Wahl MfG Gerd
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.