In C wird die Hauptfunktion main() normalerweise von einem übergeordneten Betriebssystem aufgerufen und über return springt das Programm zum aufrufenden Punkt zurück. Dieser Rücksprungpunkt ist bei AVR-GCC aber nicht defininiert, deshalb springt das Programm ins Nirwanwa, wenn es mit return beendet wird.

Ein Programm könnte etwa so aussehen:

PHP-Code:
#include "asuro.h"
#include "myasuro.h"

int main(void)
{
    
unsigned int ldata[2];

    
Init();
    
FrontLED(ON);
    
Sleep(255); // warten bis FrontLED leuchtet
    
LineData(ldata); // ADC auf Betriebstemperatur bringen
    // MotorDir(FWD,FWD); // Init() setzt MotorDir schon auf FWD,FWD
    
MotorSpeed(150,150); // losfahren
    
while(1)
    {
        
LineData(ldata); // Liniensensoren einlesen

        
if (ldata [0] > ldata [1]) // links heller, nach rechts fahren
        
{
            
MotorSpeed(200,100);
            
StatusLED(RED);
        }
        else
        {
            
MotorSpeed(100,200); // rechts heller (oder gleich), nach links fahren
            
StatusLED(YELLOW);
        }

        if (
PollSwitch()>0// Taster betätigt?
        
{
            
MotorSpeed(0,0); // wenn ja, dann stop
            
StatusLED(GREEN);
            
BackLED(ON,ON);
            while(
1); //Stop und Ende
        
}
    }
    return(
0); // darf nie ausgeführt werden!

(ungetestet)

Das funktioniert aber nur, wenn PollSwitch() richtig arbeitet.