Hola MiCrOtRoNiC, que curioso me puse a analizar el código y puedo decir que lo entendí
y espero poder pasarlo a C, el detallito es que no domino mucho C, así que tenganme un poquito de paciencia, pero me siento y lo hago. Una observación en el circuito no sé porque no le colocaron las resistencias correspondientes a cada color, yo creo que faltan. Bueno sé que lo que quieren es ver el código pero en cuanto lo tenga listo lo publico, aunque dependeré de alguién que lo monte en físico y me diga si le funciona. Estas noches me siento a tratar de convertirlo, me gustaron mucho los efectos de luces.
Estoy seguro que recibiré ayuda de su parte para corregir cualquier detallito u optimizar el código en C, sin embargo creo que les puedo comentar más o menos como entiendo que funciona:
El programa va multiplexando los 8 LEDS cada 20us, es decir enciende el LED1 durante 20us y luego lo apaga para encender el otro LED RGB 20us más y así sucesivamente, además el PIC consulta si tiene datos en la UART, si es así entonces está programado para recibir 12 bytes, luego cada byte lo separa en nibles, es decir la variable "rxDatatemp" que es de 8 bits (1 Byte) la separa en dos variables de 4 bits (1 Nible), luego esas variables pueden alcanzar un máximo valor de 15 (0 --> 15) es comparada con "theCount" y dependiendo si es mayor o menor, apaga o enciende el color correspondiente.
Bueno al menos es lo que e logrado entender porque también es 1era vez que veo éste JAL.
Aprovecho la oportunidad para preguntar como hacer en C para separar una variable de 8 bits en otra de 4, es posible esto? ó hay que valerse de algun truco?