Gast
#1062193
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!