Forum: Mikrocontroller und Digitale Elektronik ascii to int


von Simon R. (Gast)


Lesenswert?

Hallo zusammmen,

kleine Infos vorweg:

ich möchte einen ATMega8 im AVR-Studio in C programmieren.

Dabei soll eine variable ab 0 hochgezählt und auf einem LC-Display 
angezeigt werden. Allerdings gibt er mir ab der Zahl 9 nur die 
ASCII-Symbole aus (7,8,9,:,;,< usw.). Aber ich möchte, dass er mir die 
Zahlen bis 200 im Int-Format ausgibt.

Kennt jemand vielleicht eine Lösung dazu (außer printf)?
Ich habe im Tutorial etwas über die atoi - Funktion gelesen...aber so 
richtig schlau bin ich daraus nicht geworden.

Vielen Dank im voraus.

von Karl H. (kbuchegg)


Lesenswert?

Simon R. schrieb:

> Ich habe im Tutorial etwas über die atoi - Funktion gelesen...

atoi wäre auch die falsche Funktion.
Du brauchst die Funktion in der Gegenrichtung.

http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F

von Simon R. (Gast)


Lesenswert?

Aber warum? Das verstehe ich nicht...
Ich habe eine ascii-Darstellung...möchte sie aber als int ausgeben und 
nicht umgekehrt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>> Dabei soll eine variable ab 0 hochgezählt und auf einem LC-Display
>> angezeigt werden.
Du hast eine Variable = integer
Du willst ein Zeichen = ASCI
Also von "integer to ascii"

von Simon R. (Gast)


Lesenswert?

aah..ok. Ich werde es ausprobieren...vielen Dank für die schnelle 
Antwort. :-)

von Stefan P. (form)


Lesenswert?

Für Zahlen von 0-9 addiere einfach "48" dazu. 48 = Ascii "0", usw.
Für Zahlen über 10 müsstest Du dann auswerten, und jede einzeln 
behandeln... Warum kein printf oder sprintf ?

von Stephan V. (orca)


Lesenswert?

Stefan P. schrieb:
> Warum kein printf oder sprintf ?

weil printf unmengen an Speicher braucht, der für eine einfache itoa 
Konvertierung reine Verschwendung ist.

von Martin V. (oldmax)


Lesenswert?

Hi
Auch wenn's vieleicht mit Kanonen auf Spatzen gleicht, für jede Stelle 
eine Ziffer 48 - 57 hochzählen mit entsprechendem Überlauf. Soll der 
Gesamtwert Integer erhalten bleiben, dann halt noch eine weitere 
Variable für den Integerwert. Die Stellen kann ich dann einfach durch 
Abfrage auf größer 57 wieder auf 48 setzen und habe damit ASCII. Dürfte 
weniger Aufwand sein, als eine ASCII - Wandlung aus einer Integer 
heraus.
Gruß oldmax

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.