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