Forum: Mikrocontroller und Digitale Elektronik umwandlung in ascii code


von Dennis (Gast)


Lesenswert?

Hallo,

ich habe da ein Problem mit der Übertragung von Dezimalzahlen über den
UART an ein Terminalprogramm. In einem Register habe ich eine Zahl
zwischen 0 und 255. Diese Zahl möchte ich nun als Dezimalzahl auf dem
Terminalprogramm ausgeben. Das Problem ist nun, dass ich nur ascii
-Zeichen einzeln übermitteln kann (oder?). D.h. ich müsste aus der
Dualzahl im register irgendwie die dezimalen Hunderter-, Zehner- und
Einerstellen gewinnen und sie dann in der richtigen Reihenfolge
übermitteln. Habt ihr eine Idee wie man das machen kann???

Grüße Dennis.

von hebel23 (Gast)


Lesenswert?

Hallo Denis,

Du musst die Hexzahl(bin) zunächst in eine Dezimalzahl(bcd) umwandeln.
bin2bcd8 :
http://www.atmel.com/dyn/resources/prod_documents/doc0938.pdf

Anschließend stehen die Dezimalzahlen dann einzeln in den
entsprechenden Registern.
z.B. 245 ->  r16=2, r17=4, r18=5

Die Dezimalzahlen noch mit dem Offset von 0x30 addieren
(ASCII-Umwandlung) und über UART übertragen - fertig!

Gruß Andreas

von Dennis (Gast)


Lesenswert?

Danke für den Tipp,

ich werds mal versuchen.

Dennis.

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.