Damit hast du dir die Antwort ja schon selbst gegeben.
Du startest, die Motoren drehen, Taste nicht gedrückt, und damit läuft es in das letzte while und kann nicht mehr heraus.
Wenn du die Taste gedrückt hast, läuft nur ein Motor, dann wieder in das while usw.
Code:
#include "asuro.h"

int main(void)
{
   Init();

while (1){
MotorDir(FWD,FWD);
MotorSpeed(250,250);
StatusLED(GREEN);
FrontLED(OFF);
BackLED(OFF,OFF);


while (PollSwitch()==0)
{
MotorDir(FWD,FWD);
MotorSpeed(200,0);
StatusLED(YELLOW);
FrontLED(OFF);
Sleep(255);
BackLED(ON,ON);
}
return 0;
}
Du musst die Programmteile so anlegen, das sie immer wieder durchlaufen werden.
Das if von "listner" finde ich besser lesbar.