Forum: Mikrocontroller und Digitale Elektronik Variable zur Laufzeit ändern


von Onur Demir (Gast)


Lesenswert?

Hallo,

ich möchte einen derzeit binären Temperaturwert dezimal auf einen LCD
anzeigen lassen. Für die Umwandlung von binär nach dezimal gibt es ja
genug Codes. Wie gebe ich aber dann die dezimale Zahl aus? Da ich meine
Codes in Assembler schreibe, frage ich mich wie man das am besten
anpacken sollte. Mit einem z-pointer? Ich dachte immer, dass ich die
Ausgabe mit einem Z-pointer nur dann realisieren kann, wenn ich den
String, bzw. die Zahlen vorher definiert habe. Aber wie mache ich das
zur Lauifzeit, wenn ich alle 5 Sekunden ein Wert ausgeben will?

MFG

Onur

von Rick D. (Gast)


Lesenswert?

Du stellst die Zahlen im BCD-Code dar und vor der Ausgabe auf dem LCD
addierst du 0x30 hinzu. Dadurch bekommst du den HEX Wert des
ASCII-Zeichens ;o)
Hoffe mal ich habe dein Problem richtig verstanden.

von Die Waldfee (Gast)


Lesenswert?

@onur: Vielleicht hilft Dir ja der Hinweis, dass man Daten im RAM
jederzeit ändern kann etwas auf die Sprünge ;-)

von Onur Demir (Gast)


Lesenswert?

Hallo,

ich muss ja die Daten z.B: 22,5°C ausgeben. Ich habe halt noch ein
Verständnisproblem:

ldi ZL, LOW(daten*2)
ldi ZH, HIGH(daten*2)
        lpm
        mov R16, R0
        out PORTB, R16
daten:
.db 0b10101010                 // Hier sollten 22,5°C als BCD stehen.

Die Ausgabe auf einem LCD sollte ich doch mit der obigen Variante
machen oder? Aber "daten" ist statisch! Meine Werte ändern sich alle
5 Sekunden. Kann es sein dass ich da falsch denke? Habe ich ein
Denkfehler?

MFG

Onur

von Hannes L. (hannes)


Lesenswert?

Mit LPM (Load Program Memory) greifst du auf Programmspeicher (Flash)
zu, dort stehen nur Konstanten.

Schau dir mal das SRAM an und die Befehle, die auf SRAM zugreifen. Da
gibt es auch Zugriffe über Pointer (LD ST). Die Tabelle Instruction-Set
im Datenblatt (ausdrucken!!) und die Onlinehilfe des AVR-Studios sind
deine Freunde.

...

von Die Waldfee (Gast)


Lesenswert?

Falls Dir das mit dem SRAM zu kompliziert ist, kannst Du die Daten auch
in den Registern halten (ist halt nicht so elegant, aber möglich).
Offensichtlich ist bislang der RAM völlig an Dir vorbeigegangen...

von Onur Demir (Gast)


Lesenswert?

Hallo,

es macht Spaß die Antworten zu lesen. Lasst mich mal ein bißchen selber
recherchieren, dann komme ich mit präziseren Fragen an euch. Trotzdem
Dankeschön.

Grüße

Onur

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.