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
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.
@onur: Vielleicht hilft Dir ja der Hinweis, dass man Daten im RAM jederzeit ändern kann etwas auf die Sprünge ;-)
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
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. ...
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.