Ich versuchs trotzdem mal mit Code!
Das ist nur der Code für den Comparematch Interrupt.
Die Timer Initialisierung und die Initialisierung der Variablen, sowie die Interruptfreigabe müssen natürlich auch gemacht werden.

Code:
Comparematch Interrupt Routine
if(pinb.0==0)     // Hier werden die Pulslängen erzeugt
{
portb.0=1;
OCR1A=TCNT1+Pulselengh[channel]-200;
}
else
{
// Hier werden die Pausen zwischen den Impulsen erzeugt
portb.0=0;
OCR1A=TCNT1+200;
channel++;
if(channel>8){channel=0;};
};
Die indizierte Variable Pulslengh hat dabei 9 Integer ( 16Bit ) Speicherplätze.
Im Speicherplatz 0 ist die Länge der Pause drin, im rest die gewünschten Impulslängen.

Mehr ist das nicht.
Ich hab den Code jetzt mal kurz aus dem Kopf aufgeschrieben und hoffentlich nichts vergessen.