ich werds versuchen:

Pseudocode:
Code:
#define SERVO1_LOW PORTA&=~(1<<0)
...
#define SERVO8_LOW PORTA&=~(1<<7)

servozeiten[anzahlServos];
servozahl[anzahlServos];
servo_count = 9;

init(){
    for(/*alle servos*/){
       servozeiten[i] = 1,5ms; //natürlich musst du das in taktzyklen umrechnen
       servozahl[i] = i;
    }
}

main(){
    init();
    for(;;){/*tu was (zb Servos setzen)*/}
}

ISR(){
    switch(servo_count){
        case 0:
           SERVO1_LOW;break;
        case 1:
           SERVO2_LOW;break;
        ....
        case 9:
            //sortieren von servozeiten und servozahl (dafür hast du 2^16 zyklen zeit, da der timer max 16bit hat)
            //differenz zwischen servozeiten brechnen
            //warten bis 20ms vorbei sind (bitte nicht mit delay_ms() sondern den timer so oft setzen und nichts tun bis die 20ms vorbei sind)
            //Pins auf high setzen
    }
    //timer auf nächsten IR setzen
}
Ich hoffe ich hab nix vergessen

LG