Ich denke mal das Problem ist, dass Du in der switch-Anweisung die Variable agrobot mit neuen Werten belegst. agrobot bekommt seinen Wert doch von der Interrupt-Routine, und die switch-Anweisung soll nur die passende Funktion aufrufen, oder?
Dann müsste die Hauptschleife so aussehen:
Code:
while(1) //Hauptschleife 
{ 
    //Aufgabe/Funktion abfragen 
    
    switch ( agrobot ) 
    { 
        case MENU_error:        error();                  //Fehlerausgabe 
                            break; 
        case MENU_menu:         menu();                   //Menü 
                                break; 
        //...weitere Menüpunkte 
        case MENU_backevade:    backevade(agrobot2);      //Rückwärts ausweichen 
                                break; 
        case MENU_frontevade:   frontevade(agrobot2);     //Vorwärts ausweichen 
                                break; 
    } 

}//Hauptschleife