Me encanto!! y te digo que entendí enseguida como funciona ya que yo había pensado algo similar para tener varios PWM para controlar varios servos de aeromodelismo.
Para completar un poco mas la explicación se puede hacer asi:
Configurar el timer para que meta una int cada cierto tiempo, que no seria la frecuencia del PWM, sino tantas veces mas alta como resolución del PWM queramos, por ejemplo para tener una resolución de 256 bits, en cada periodo del PWM habría que hacer 256 interrupciones, en cada interrupción se incrementa el contador. Ademas al momento de producirse dicha interrupción comenzamos la recorrida donde se compra la variable de cada salida PWM con el contador, si el contador es inferior a la variable de la salida se deja en uno y si es mayor o igual se pone a cero dicho pin. Obviamente cuando el contador desborda (se pone a 1 como dijo bruno) todas las salidas se ponen a 1 ya que al llegar el contador a cada valor de las variables estamos poniendo a cero el pin asociado a dicha variable.
Con esto armamos lo que yo le llamo la placa de video del PIC (no estoy loco) si eso funciona bien, tenemos ahora 96 varibles, las cuales vamos modificando a nuestro gusto en cualquier momento, ya que al producirse la interrupción es ahí donde se toma ese valor y y sale por el PWM que determina el brillo de cada led!!!!!!!!
Faaaa, no se si amplié o compliqué mas la cosa jajaja
Eso en asemble se puede hacer con muy pocas instrucciones!!!!!