ASCII-Wert als Dezimalwert ausgeben

Gast #1062193
Lesenswert?

Hallo zusammen,

ich habe hier ein Programm für die serielle Schnittstelle. Ich habe eine 
Funktion

void outNibble(unsigned char ch)
{
  if ((ch & 0x0f) < 10)
  {
    outChar((ch & 0x0f) + '0');
  }
  else outChar((ch & 0x0f) + '7');
}

zur Umwandlung eines Nibbles (0 bis 0x0F) in ein ASCII-Zeichen.

Die Funktion

void outHexByte(unsigned char ch)
{
  outNibble(ch / 16);  // shift um 4 Stellen nach rechts
  outNibble(ch);
}

gibt mir das ASCII-Zeichen in Hex aus. Wenn ich outHexByte(0x2f); 
aufrufe, wird 0x2F gesendet.

Jetzt möchte ich eine Funktion outDecByte () entwerfen, die mir das Byte 
im dreistelligen Dezimalformat ausgibt ("000" bis "255"), nur das klappt 
bis jetzt nicht.

Ich dachte mir die zwei einzelnen Nibbles in zwei Variablen 
zwischenzuspeichern und diese dann zu addieren, also in etwa so


void outDecByte(unsigned char ch)

char temp1, temp2;

temp1 = outNibble(ch / 16);
temp2 = outNibble(ch);

hexbyte = temp1 + temp2;

Dann könnte ich durch eine Division die einzelnen Ziffern der 
Dezimalzahl ermitteln, also in etwa so

0xFE = 254

0xFE / 100 = 2 Rest 54
54/10 = 5 Rest 4

Das Problem ist nur, dass ich den Code nicht hinbekomme. Das System ist 
ein 8051 (Keil µVision). Vielleicht könnt ihr mir weiterhelefen..

Danke!
Gast #1062208
Lesenswert?

OK, das will ich ja so machen!!!, aber der Compiler meckert, wenn ich 
die Funktion outNibble() der Variablen temp zuweisen will, also

temp1 = outNibble(ch / 16); //geht schon mal nicht.

Fehlermeldung: "illegal type conversion from/to 'void"
Gast #1062218
Lesenswert?

Stimmt irgendwas mit der Deklaration ist falsch...

So

void outDecByte( unsigned char ch )
{
  unsigned char temp1, temp2, hexbyte;

  temp1 = outNibble(ch / 16);
  temp1 = outNibble(ch);


}

geht das noch nicht.

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