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:
Die Ausgabe im Terminal sieht dann so aus: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); }
Übrigens sollte man den von PollSwitch() gelieferten Wert IMMER überprüfen!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
Gruß
mic







Zitieren

Lesezeichen