Forum: Mikrocontroller und Digitale Elektronik ?? Z-Register ??


von Stephan P. (Gast)


Lesenswert?

moings...

kann ich die Befehlfolge

lpm
mov PortA,Rn
adiw ZL,1

durch

lpm Rn,ZL+
mov PortA,Rn

ersetzen, oder handel ich mir dabei irgendwelche Probleme ein??

Und kann ich auf ZL auch den inc-Befehl anwenden?
BZW, kann ich eine Adresse im Z-Register mit inc R31 manipulieren??

Danke
Servutz,
Stephan

von Peter D. (peda)


Lesenswert?

Du must Dir nur das Datenblatt des von Dir verwendeten AVR-Typs ansehen. 
Auf den hintersten Seiten sind alle unterstützten Befehle aufgeführt.

Ein ATTINY12 kann z.B. ein LPM aber kein ADIW.


Peter

von Stephan P. (Gast)


Lesenswert?

moings...


Ja, dass der AVR den Befehl können muss ist schon klar...

Mir ging es eher darum, ob ich das LPM mit post-increment
anstelle des ADIW benutzen kann, meiner Meinung nach stellt
es kein Problem da, allerdings sehe ich öfter das erste
Konstrukt [ZL nach R0 laden, R0 über einen Port ausgeben und
dann erst ZL mit einem ADWI incrementieren] als das zweite,
welches mir effizienter erscheint [ZL nach Rn laden, danach
wird ZL automatisch incrementiert, dann Rn auf Port ausgeben].

Bleibt meine Frage, was ist die bessere Wahl???

Meine zweite Frage hat sich geklärt, in einem Tutorial wird
"inc ZL" verwendet, von daher wird es wohl ein gültiges
Konstruct sein... :)

Servutz
Stephan

PS: Man entschuldige meine vielleicht etwas komischen Fragen,
    aber ich beschäftige mich erst seit einer Woche mit dem
    AVR...

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Klar kann man post-increment benutzen, allerdings ist das nur bei den 
neueren AVRs verfübar. adiw können fast alle.

inc ist mit mehr als 256 Byte Speicher eigentlich ziemlich unsinnig, da 
der Überlauf von ZL nicht erkannt wird.

von Stephan P. (Gast)


Lesenswert?

Hmm, also kann ich INC nur dann verwenden, wenn ich sicher weiss,
dass ich keine 256 Byte Grenze überschreite...

Gut, das bekomme ich geregelt... :)

Wenn ich grad richtig gelesen hab, dann kann der AT90S8515 das
post-increment NICHT, ist das korrekt??

Schade eigentlich...

von mikki merten (Gast)


Lesenswert?

Der 90S8515 verfügt nur über den einfachen LPM Befehl. Da dieser aber 
zwischenzeitlich durch den Nachfolgetyp MEGA8515 ersetzt wurde ist dies 
auch kein den Problem mehr. Dieser kann ja den LPM Befehl mit Angabe von 
Zielregister und auto-increment.

von Stephan P. (Gast)


Lesenswert?

Danke an alle Helfer...


Servutz
Stephan

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.