Wenn du es parallel laufen lassen willst dann mußt du es machen wie BlackBox das beschrieben hat. Mit Timer laufen lassen und dann den Interrupt abfangen. Allerdings wird beim Aufrufen der Interruptroutine und prüfen welcher Kanal jetzt abgeschaltet werden muss auch wieder Zeit benötigt und das führt zu einem längeren Puls am Ausgang.
Die Assembler routine war ne schnelle Idee, wie man es NACHEINANDER ausführen kann. Sprich, man schaltet Kanal 1, dann Kanal 2 und so weiter. Die Assembler-Routine nimmt die gemessene Zeit für z.B Kanal 1 und soll genausoviele Takte wie der Wert des Registers ist auch den Pin auf High halten. Da allerdings der Rücksprung mit der GOTO anweisung 2 Takte und nicht 1 benötigt, muss das register vorher halbiert werden, damit dann nicht doppelt so lange gezählt wird. Ich kann mich auch irren, wie gesagt war kurz überlegt.

So long...