Das ist schon klar dass der nicht anhält. Die IF-Anweisung wird nur einmal ausgeführt. Wenn du ihn mit gedrückter Taste einschaltest sollte er rückwärts fahren. Besser wäre natürlich wenn die IF-Anweisung in der while-Schleife wäre:

Code:
#include "asuro.h" 

int main(void) 
{ 
   Init();
 
   while(1) if (PollSwitch()==0) // kein ; nach while() !!!
   { 
      MotorDir(FWD,FWD); 
      MotorSpeed(150,150); 
      StatusLED(GREEN); 
   } 
   else 
   { 
      MotorDir(FWD,FWD); 
      MotorSpeed(0,0); 
      StatusLED(RED); 
   } 

   return 0; 
}
Das hatte ich doch glatt übersehen, sorry.

mic