www.mikrocontroller.net

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


Autor: Stephan P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stephan P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stephan P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an alle Helfer...


Servutz
Stephan

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.