Ach ja, das Prinzip der 8 PWM-Ausgänge:
Timer 2 löst alle 0,1 ms einen Interrupt aus. Dort werden 8 Zähler von 0...100 (%) bis auf 0 decrementiert, bei 0 wird der jeweilige Ausgang auf Low gesetzt, bei <> 0 auf High.
Nach 10 ms (= 100 Hz) werden die Zähler je nach Modus mit 0...100 (%) neu gesetzt.
Das Programm ist in Assembler geschrieben, da hier Geschwindigkeit gefragt ist und keine Warteschleifen.