Lo he terminado!!!
Bueno, mejor dicho, he comenzado!
Ya tengo la base sobre la que trabajar para ir haciendo la libreria un poco mas completa.
A falta de medir tiempos con el analizador logico o el osciloscopio, el resultado es funcional:
Gracias tapi por el ofrecimiento, creo que ya esta solucionado esto.
Merlinz, si que use SPI por hardware, pero como dice Bruno, a falta de una FIFO de envio, me consumia todo el tiempo cargando valores al SPI y por eso debe ser que me daba tan malos tiempos.
Bruno, al final termine usando tu codigo pasado en gran parte a CCS, porque hay instrucciones que no las agarraba en ASM como el ADDFSR o el GOTO $+2, o el BRA 2.
Perdon Mig, me fue mas facil entender el codigo de Bruno y opte por ese. Aunque es verdad que tu codigo parece ocupar menos ROM. Deberia estudiarlo.
Picu, es verdad que los tiempos que muestra el datasheet no son exactamente como comente al principio, pero me base en una libreria para Arduino desarrollada por Adafruit. Ellos usaron estos tiempos, y su libreria la usan cientos o miles de personas sin queja. Asi que opte por imitar sus tiempos, que no se muy bien como llegaron a ellos, pero les funcionan
La libreria la colgue en el foro de C:
http://www.todopic.com.ar/foros/index.php?topic=42622.0El que programe en assembler y quiera probar estos leds, puede usar el codigo que propuso Bruno que es el que implemente en la libreria.
El problema que estoy teniendo es encontrar un bloque de memoria libre y consecutiva para manejar los leds.
En un PIC 12F1822 con 128 bytes de RAM solo pude manejar 10 LEDs (30 bytes) usando la funcion "malloc()" para encontrar bloques de memoria.
Tengo que investigar como "defragmentar" la memoria para tener un bloque consecutivo mas grande y aprovechar mejor la RAM.
Con Arduino pude manejar sin problemas una tira de 240 LEDs. Acaso Arduino va a ser mejor que un PIC?!!
Gracias a todos por la ayuda y los consejos prestados!