Danke für die Tipps,
Ich habe das Problem jetzt so gelöst:
Code:
#include <util/delay.h> 
#include <avr/io.h> 
#include <avr/interrupt.h> 
#include "lib.h"


unsigned char x, count; 
 

ISR (TIMER0_COMP_vect)
{ 
   if (count>x) PORTA &= ~1; else PORTA |= 1; 
   if (count < 200) count++; else count=0; 
} 

void long_delay(uint16_t ms)
{
    for(; ms>0; ms--) _delay_ms(1);
}

void demo(uint8_t a) // Demo: ein Durchgang besteht aus linker Anschlag bis rechter Anschlag
{                    // Anzahl der Durchgänge kan festgelegt werden
 uint8_t q;
 uint8_t i=14;
 for(q=0; q<a; q++)
  {
 for(i=14; i<67; i++)
  {
   
     long_delay(1000);
	
   x=i;  
  }
 for(i=67; i>14; i--)
  {
   
     long_delay(1000);
	
   x=i;  
  } 
}
}
int main(void) 
{ 
   delta_init(); 
   timer0_init();
   usart_init();
   DDRA |= 1;  
   demo(5); // Demo 5-Mal Ausführen
   
   while(1)
{
  if(usart_byte_avail()) // Dann auf Befehle über UART warten
  {                      // links:67 , mitte:39 , rechts:14  
   x = readInteger();
  
  }
} 
 return(0);   
  
}
Jetzt funktioniert alles, wie es soll.