Hallo
Das funktioniert so nicht weil SerWrite() eine Zeichenkette erwartet und PollSwitch() nur einen Wert liefert. Eine von vielen Möglichkeiten das zu lösen könnte etwa so aussehen:
Code:
#include "asuro.h"
// aus: https://www.roboternetz.de/phpBB2/ze...=328394#328394
void PrintChar(unsigned int x)
{
char ergebnis[5] = {'0','0','0','0','0'};
while (x >=10000) { ergebnis[0]++; x -=10000; }
while (x >= 1000) { ergebnis[1]++; x -= 1000; }
while (x >= 100) { ergebnis[2]++; x -= 100; }
while (x >= 10) { ergebnis[3]++; x -= 10; }
ergebnis[4] +=x;
SerWrite(ergebnis,5);
}
void PrintBin(unsigned int x)
{
char bit=16;
char ergebnis[16];;
while(bit--)
{
ergebnis[15-bit]=0;
while (x >= (1<<bit)) { ergebnis[15-bit]++; x -= (1<<bit); }
ergebnis[15-bit] +='0';
}
SerWrite(ergebnis, 16);
}
int main(void)
{
char taste;
Init();
while(1)
{
taste=PollSwitch();
if(taste && (taste == PollSwitch()))
{
PrintChar(taste);
SerWrite("-", 1);
PrintBin(taste);
SerWrite("\n\r", 2);
}
}
return(0);
}
Die Ausgabe im Terminal sieht dann so aus:
Code:
00001-0000000000000001
00001-0000000000000001
00001-0000000000000001
00002-0000000000000010
00002-0000000000000010
00004-0000000000000100
00004-0000000000000100
00015-0000000000001111
00016-0000000000010000
00007-0000000000000111
00008-0000000000001000
00008-0000000000001000
00008-0000000000001000
00016-0000000000010000
00016-0000000000010000
00016-0000000000010000
00032-0000000000100000
00032-0000000000100000
00032-0000000000100000
00002-0000000000000010
00003-0000000000000011
00003-0000000000000011
00004-0000000000000100
00006-0000000000000110
00006-0000000000000110
00006-0000000000000110
00004-0000000000000100
00001-0000000000000001
00001-0000000000000001
00001-0000000000000001
00005-0000000000000101
00005-0000000000000101
00005-0000000000000101
00005-0000000000000101
Übrigens sollte man den von PollSwitch() gelieferten Wert IMMER überprüfen!
Gruß
mic
Lesezeichen