Forum: Mikrocontroller und Digitale Elektronik 80517A -> AVR ATMega32


von Christian S. (mueke)


Lesenswert?

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

von Franz-Rainer (Gast)


Lesenswert?

So:
MOV R0,0xAB

von Franz-Rainer (Gast)


Lesenswert?

R0 ist dabei aber ein Register.

von Franz-Rainer (Gast)


Lesenswert?

Alles zurück!
So..
LDI R16,0xAB
MOV R0,R16

von Franz-Rainer (Gast)


Lesenswert?

Register R0..R15 sind beim AVR nicht direkt adressierbar.
Daher der Umweg über Register R16.

von Joerg X. (Gast)


Lesenswert?

1
ldi R16, 0xAB
2
st z R16
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)

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
Noch kein Account? Hier anmelden.