Code:
#include "asuro.h"

int main(void)
{
   Init();
   StatusLED(YELLOW);
   
   char c[3]={0, 0, 0};
   while(1)
   {
      SerRead(c,3,20);
   
   while( (c[1]||c[0]) != 'v'){
   if(c[1]=='V'||c[0]=='V')						//Vorwaerts fahren
   {
         StatusLED(YELLOW);
         MotorSpeed(150,150);
		 MotorDir(FWD,FWD);
         	  
	     if(c[1]=='L'||c[0]=='L')  //langsam
      {
         StatusLED(YELLOW);
         MotorSpeed(100,100);
        
      }
         if(c[1]=='S'||c[0]=='S')  //schnell
      {
         StatusLED(YELLOW);
         MotorSpeed(250,250);
         
      }
	     if(c[1]=='B'||c[0]=='B')  //break
      {
         MotorSpeed(BREAK, BREAK);
         StatusLED(GREEN);
      }
	     if(c[1]=='A'||c[0]=='A')   //motor aus, ausrollen
      {
         MotorSpeed(0,0);
         StatusLED(GREEN);
      }
	     if((c[1]||c[0])!= ('A'||'B'||'S'||'L'||'R')){SerWrite("*\r\n",3);}   //blabla

   }							}


     
	 while( (c[1]||c[0]) != 'r'){
    if(c[1]=='R'||c[0]=='R')			//Rueckwaerts fahren
   {
         StatusLED(YELLOW);
         MotorSpeed(150,150);
         MotorDir(RWD,RWD);

		 if(c[1]=='L'||c[0]=='L')	//langsam
      {
         StatusLED(YELLOW);
         MotorSpeed(100,100);
        
      }
         if(c[1]=='S'||c[0]=='S')	//schnell	
      {
         StatusLED(YELLOW);
         MotorSpeed(250,250);
         
      }
	     if(c[1]=='B'||c[0]=='B')	//break
      {
         MotorSpeed(BREAK, BREAK);
         StatusLED(GREEN);
      }
	     if(c[1]=='A'||c[0]=='A')	//motor aus, ausrollen
      {
         MotorSpeed(0,0);
         StatusLED(GREEN);
      }
		 if((c[1]||c[0])!= ('A'||'B'||'S'||'L'||'V')){SerWrite("*\r\n",3);}   //blabla
   }							}

      c[0]=0;c[1]=0;c[2]=0;
      Msleep(100);
   }
   
   return(0);
}
So, jetzt! Verbesserungsvorschläge usw. Wozu brauche ich auch eigentlich c[0] und c[1] in den abfragen?

Es gibt da auch eine (unbedeutende? da gelbe farbe im AVRstudio) fehlermeldung
tastat.c:11: warning: pointer targets in passing argument 1 of 'SerRead' differ in signedness