Hallo Leute, ich arbeite in meinem Studium mit dem 80517A und hier zuhause habe ich einen AVR ATMega32. Jetzt möchte ich gerne die Programme aus der Schule auch für meinen uC schrieben. Bei einem Befehl habe ich da noch ein Problem und weiß nicht wie ich das lösen soll? Bei dem 80517A ist folgender Befehl: MOV @R0, #0ABh Das besagt ja, dass an die Adresse, die als Wert in R0 steht, der angegebene Wert geschrieben wird. Nehmen wir mal an in R0 steht eine 40h, dann wird an die Stelle 40h im Speicher der Wert ABh geschrieben??? Wie realisiere ich dies mit meinem ATMega32? MfG Muecke
Gast
#546279
So: MOV R0,0xAB
Gast
#546281
R0 ist dabei aber ein Register.
Gast
#546282
Alles zurück! So.. LDI R16,0xAB MOV R0,R16
Gast
#546284
Register R0..R15 sind beim AVR nicht direkt adressierbar. Daher der Umweg über Register R16.
Gast
#546287
1 | |
2 | |
statt r16 geht auch eins der anderen Register 16-31 und statt Z (R30:R31) auch X, oder Y das ist das 'schöne' an einer Load/Store-Architecture, die Frage ist, ob das "st" nötig ist, oder ob du "noch Register frei hast" (besuch mal das AVR-Asm-Tutorial hier auf der Seite)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.