Also hier mein Programm:

Ist ein wenig durcheinander, aber der gedanke war der
das ich über den Pollswitch in einzelne Modi´s springe (Demomode, und steuern über Seriell) Ist aber noch nicht ganz fertig

Code:
#include "asuro.h"
#include "myasuro.h"

int x=0;									//Zählvariablen für diverse Zählschleifen
char emfangene_daten[10];

void Goo(int d,int l)								//eigene goturn anweisung 
{													//Nur zum Test!!!!!!
	if (l>0)
	MotorDir(FWD,FWD);
	else
	MotorDir(RWD,RWD);
	
	MotorSpeed(d,d+8);							//die +8 sind nur zum gradeaus fahren
	Msleep(5000);
	MotorSpeed(BREAK,BREAK);
}


int main(void)
{

    
  Init();  									//Devinierter Zustand vom ATMEL
  
 
 while(1)
{
	  while (PollSwitch() == 0)
	  { 
		StatusLED (GREEN);
		Msleep (500);
		StatusLED (RED);
		Msleep (500);
	  }
		
		switch (PollSwitch())					//Auswahlmenü gesteuert über Pollswitch
		{
			case 1:emfang();
			break;
			case 4: 								//Kleine Fahranweisung zu Demo zwecken.
			StatusLED (YELLOW);
			Msleep (2000);
			
			EncoderInit ();
			for (x=1; x<=4; x++)					//Asuro fährt ein quadrat
				{GoTurn ( 0, 45, 200);					//45° hier entspricht 90° drehung im real, da "grobe" encoderscheibe eingebaut
				GoTurn (150, 0, 200);}
			Msleep(1000);
			
			for (x=1; x<=2; x++)					//Asuro fährt einen kreis vorwärts und rückwärts
				{if (x==1)
				GoTurn (300, 90, 255);
				else 
				GoTurn (-300, -90, 255);
				Msleep(500);}
			break;
		
		
			default: 								//Bei falscheingabe blinkt die Status LED 5x Gelb
			for(x=1; x<=5; x++)
				{StatusLED(OFF);
				Msleep(500);
				StatusLED(YELLOW);
				Msleep(500);}
		break;
	  }
		
	return 0;
	}
}

int emfang(void)							//Steuerung über Seriel
{
	EncoderInit ();
	
	
	StatusLED (YELLOW);  
	BackLED (ON, OFF);						
	Msleep (500);
	BackLED (OFF,ON);
	Msleep (500);
	BackLED (OFF,OFF);							//AUS damit!!!!
	
	SerWrite ("READY", 10);
	SerRead (emfangene_daten, 1, 0);		//Warte auf Daten, ohne timeout!!
	
	switch (emfangene_daten[0])
	{
		case'T':								//keine Daten erhalten
		break;
		
		case '1':									//Wenn daten =1 fahr vor.
		GoTurn(10, 0, 150);
		break;
		
		case '2':									//wenn daten =2 fahr zurück
		Goo (200, 1);
		break;
		
		default:								//sonst sendefehler 5xgelb
		for(x=1; x<=5; x++)	
		{
			StatusLED(OFF);
			Msleep(500);
			StatusLED(YELLOW);
			Msleep(500);
		}
		break;
	}
return 0;
}

@ ExMachina: einen fehler durch die Radmuffe kann ich ausschließen, da es über Motorspeed keine probleme gibt. Nur bei GoTurn.

Aber danke für die Idee.