hallo MrBean93

was dein asuro macht ist föllig richtig.
aber dazu schauen wir uns jetzt mal an was in deinem programm steht:

Code:
//den anfang lassen wir weg ...

while(1)
{ //Endlosschleife, wird immer wiederholt
       
        //statusled auf grün und frontled ein
        //motor auf vorwärts mit 180, 180
        
        if(PollSwitch()>0)
        {//falls eine taste gedrückt wird:
                 
                 //motor aus
                 //statusled auf rot und frontled aus
                 //AUA über hyperterminal ausgeben

        }//ende der if-schleife. da kein else vorhanden ist wird einfach fortgesetzt

}//ende der while(1)-schleife, dh. es wird wieder von oben begonnen!
noch kurz zum ablauf:

nach dem einschalten tritt asuro in die endlosschleife ein
- schalten der leds
- schalten des motors
- prüfen ob taste gedrückt ist:
-- wenn ja: motor aus, leds schalten.
dann gehts einfach weiter, egal ob noch eine taste gedrückt ist oder nicht!
- sprung zum anfang der endlosschleife!


altenativ könntest du es zb. so machen:
Code:
#include "asuro.h"
int main(void) {
   Init();
   while (1) 
   {
         StatusLED (GREEN);
         FrontLED(ON);
         MotorDir(FWD,FWD);        //motor ein
         MotorSpeed (180,180);
      
      if(PollSwitch()>0)               //falls ein taster gedrückt wir in der if-anweisung fortsetzen         
      {
                      MotorSpeed (0,0);
                      StatusLED (RED);
                      FrontLED(OFF);
                      SerWrite("AUA!", 4);
                      while(PollSwitch()>0) {}    //solange ein taste gedrückt ist soll er nichts machen
      }//ende der if-anweisung

   }//ende der endlosschleife, von oben wieder anfangen
   return 0;       //sollte normaler weiße immer am ende der main()-funktion stehen
}
was mir noch aufgefallen ist: die runden kalmmern ( { und } ) um den ausführungsblock nach while(1){ kannst du dir sparen