Nein, die MotorDir und MotorSpeed mussen im vorne von dem for(i=0;i<300;i++) und for(i=0;i<1000;i++) geschrieben werden. In deine code wird das 300 mal und 1000 wieder neu eingestellt. Das tut kein weh, aber nur einmal reichts.

Code:
#include "asuro.h" 

int main(void) 
{ 
    

    Init(); 
   unsigned char taste; 
   int i; 
    
   StatusLED(OFF); 
   MotorDir(FWD,FWD); 
    
   while(1){ 
   taste=PollSwitch(); 
    
   if(taste>0){
      MotorDir(RWD,RWD);  /* nur ein mal drehrichtung einstellen  */ 
      MotorSpeed(100,100);  /* nur ein mal geschwindigkeit einstellen */
      for(i=0;i<300;i++){    /* 300 mal ... */
         Sleep(10); }            /*  ... 10/36000 sekunden warten   */

  /* 3000/36000=1/12 sekunde später nach die letzte Motorspeed */  
   
      MotorDir(BREAK,RWD);  /* nur ein mal drehrichtung einstellen  */
      MotorSpeed(0,125);    /* nur ein mal geschwindigkeit einstellen */
      for(i=0;i<1000;i++){   /* 1000 mal ... */
         Sleep(10); }     /*  ... 10/36000 sekunden warten   */

   /* 10000/36000 = 1/3.6 sekunden später nach die letzte MotorSpeed(0,125)   */

    
   StatusLED(RED); 
   }        /* ende if: irgend einer 'taster' bemerkt */ 
    
   else { 
      MotorDir(FWD,FWD); 
      MotorSpeed(200,200);   }  /*   ende else: kein taster  */
  
 }     /*   ende while(1), sollte er nicht passieren   */     

   return 0; 
}