Frage zu AVR/Assembler 16-Bit Zahlen aus Flash lesen

Gast #1220438
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Frage zum AVR(ATMEGA32)/Assembler und dem Einlesen von 
Zahlenwerten.

Ich möchte im Flashspeicher 16-Bit Zahlenwerte ablegen, die jeweils eine 
zeitdauer in Milisekunden darstellen.

pausen:    .dw 1000,10000,2000,0


Wenn der Wert 0 eingelesen wird, soll das Programm ersteinmal in einer 
Endlosschleife bleiben.

Die Zahlenwerte sollen eingelesen werden und das Lowbyte soll in R24 und 
das Highbyte in r25 gespeichert werden.


Mit

LDI ZL,LOW(pausen*2)
LDI ZH,HIGH(pausen*2)

setze zeige ich mit Z auf pausen.

Wie kann ich aber nun die Zahlen einlesen und in R24/R25 speichern?

Ich verstehe die Anwendung des LPM register,Z+ bzw LMP register bei 
16-Bit-Zahlen nicht.



Holger
Gast #1220770
Lesenswert?
• ▲
▼
Hi

Du solltest dich erst mal etwas mit den Assemblerbefehlen beschäftigen. 
Ansonsten im AVR-Studio den Cursor auf den Befehl setzen und F1 drücken. 
Die Assmblerdirektiven und Expressions sollte man natürlich man 
natürlich auch kennen.

>was machen diese beiden Befehle genau?

Der lädt das Z-Register mit der Adresse des (ersten) 16-Bit-Wertes.

MfG Spess
Gast #1220774
Lesenswert?
• ▲
▼
> was machen diese beiden Befehle genau?

Dasselbe wie:

LDI ZL,LOW(pausen*2)
LDI ZH,HIGH(pausen*2)

Ob nun mit zwei multiplizieren oder um eine Bitposition nach links 
verschieben, das ist in diesem Fall gehupft wie gesprungen, denn das 
rechnet nicht der AVR, sondern der Präprozessor des Assemblers. ;-)

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren