Er bleibt schon bei while(1); hängen. ;)
Das ; beendet gleich die while Schleife und der Rest wird nie ausgeführt.
Korrekt würde es so heißen:

Code:
while(1)
{
//der teil der hier steht wird immmer wieder wiederholt!
}
und in deinen code:
Code:
#include "asuro.h"

int main(void)
{
int i;
   Init();
   while(1)
      {
      if
         ((PollSwitch()&(0x01|0x02|0x04))){
         MotorDir(FWD,FWD);
         MotorSpeed(150,90);
         BackLED(OFF,ON);
         for(i=0;i<790;i++)
         {Sleep(144);}}
      else if
         ((PollSwitch()&(0x08|0x16|0x32))){
         MotorDir(FWD,FWD);
         MotorSpeed(90,150);
         BackLED(ON,OFF);
         for(i=0;i<790;i++)
         {Sleep(144);}}
      else {
         MotorDir(RWD,RWD);
         MotorSpeed(120,120);}
         BackLED(OFF,OFF);
      }
   return 0;
}