Dezimale Zahl wird binär ausgegeben

Gast #1428344
Lesenswert?

Moinsen!

Ich versuche, eine Integerzahl auf einem Display auszugeben. In einer 
Programmschleife wird von 0 bis 255 gezählt und ein Port mit digitalen 
Ausgängen wird gesetzt. Auf dem Display möchte ich den aktuellen 
Zählerstand als dezimale Zahl haben.

Dazu benutze ich die Funktion itoa():

iz ist ein int und ch ein char.
1
    
2
    for(iz=0;iz<255;iz++)
3
    {
4
      PORTB = iz;
5
      itoa(iz,ch,2);
6
      lcd_ausgabe(ch);
7
      _delay_ms(2500);
8
    }

Auf dem Display wird jetzt aber nicht 0, 1, 2, 3, 4 angezeigt, sondern 
das ganze als Bin-Code. Woran liegt das und wie kann ich das ändern?
#1428365
Lesenswert?

nanotech schrieb:

> iz ist ein int und ch ein char.

Das wird wohl nicht reichen, wenn eine 3-stellige Zahl ausgegeben werden 
soll. Die würde ja mindestens 3 char benutzen, für jede Stelle einen.
Also, spätestens da solltest du jetzt schon stutzig werden.

http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F
http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
#1428381
Lesenswert?

nanotech schrieb:
> Auf dem Display wird jetzt aber nicht 0, 1, 2, 3, 4 angezeigt, sondern
> das ganze als Bin-Code. Woran liegt das und wie kann ich das ändern?

Es liegt daran, daß Du es so hingeschrieben hast.
Das 3. Argument von itoa(), "2" hat eine bestimmte Bedeutung.

Es könnte recht hülfend sein, wenn man mal nachguckt, was die Argumente 
einer Funktion bedeuten, ehe man sie verwendet.


Peter

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