das ganze wird nur einmal durch laufen du musst das Programm ungefähr so ändern:
Code:
#include "asuro.h" 

#define SPEED  150 

int main(void) 
{ 
  LineDemo(); 
  return 0; 
} 

int speedLeft,speedRight; 
unsigned int lineData[2]; 
int ADOffset; 

void LineLeft (void) 
{ 
   speedLeft  += 1; 
   if (speedLeft > 150) speedLeft = 151; 
} 

void LineRight (void) 
{ 
   speedRight  += 1; 
   if (speedRight > 150) speedRight = 151; 
} 

void LineDemo(void) 
{ 
int i; 
unsigned char j; 

   Init(); 
   while(1) //Endlosschleife
{
   FrontLED(ON); 
   for (j = 0; j < 255; j++) LineData(lineData); 
   LineData(lineData); 
   ADOffset = lineData[0] - lineData[1]; 
   speedLeft = speedRight = SPEED; 
   for(;;) { 
      LineData(lineData); 
      i = (lineData[0] - lineData[1]) - ADOffset; 
      if ( i > 4) { 
         StatusLED(GREEN); 
         LineLeft(); 
      } 
      else if ( i < -4) { 
         StatusLED(RED); 
         LineRight(); 
      } 
      else { 
         StatusLED(OFF); 
         speedLeft = speedRight = SPEED; 
      } 
      MotorSpeed(speedLeft,speedRight); 
   } 
} 
}