Vielleicht ist es auch eine gute Sache das Problem mit dein Programm und Hyperterminal zu reduzieren biss auf nur den StatusLED anschalten auf Rot oder Grün. Nun habest du Code drin das ihn fahren last, und das ist schwer mit den IR modul zu folgen mit der Hand. Und alles was nicht wirklich wichtig ist macht nur unübersichtlich.

Was denkst du von:
Code:
#include "asuro.h" 
#include "stdlib.h" 

int main(void) 
{ 
   char message[1];

   Init();
   
   StatusLED(OFF); // Keine Grune StatusLED bitte. Das verwirrt.

  
   while( 1 ) 
   { 
     SerRead(message,1,1);  //Was für Zeichen gibt es nun? Aber nicht für immer warten.
     
     SerWrite("\n\r", 2); // Neue Zeile, nicht hinter das Lokalles Echo schreiben
     SerWrite("SerRead antwortet: ",19);
     SerWrite(message[0],1); //Empfangene Zeichen zurück senden, damit wir sehen können was schief geht.
     SerWrite("\n\r", 2);  // Neue Zeile, sonnst kommt alles hintereinander, und wird es unübersichtlich.
      
     if (message[0] == 'g' || message[0] == 'G') //!!! Kann kleine g und grosse G verstehen
      {
          StatusLED(GREEN);
      } // ende von if(message[0] == 'g')  

      if(message[0] == 's'|| message[0] == 'S') //!!! Kann kleine s und grosse S verstehen
      { 
         StatusLED(OFF); 
      } // ende von if(message[0] == 's')

    if !(message[0]=='g' || message[0]=='s' || message[0]=='G' || message[0]=='S')  // nicht ein 'g/G' empfangen oder nicht ein 's/S' empfangen, also ich bekomme etwas was nicht erwartet ist. 
     {
      StatusLED(YELLOW);
    }
      
   } // ende von while( 1 ) 
   return 0; 
} //main(void)