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
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
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...
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.
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...
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.
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.