Hola rivale, buenas tardes,
la migración al CCS fue todo un fracaso, por varios motivos, en principio, la memoria
en XC8 FREE la memoria ocupaba un 78.3% y en PRO un 63%
en CCS, habiendo declarado aprox un 30~40% de las variables saltó un error de ram llena,
leyendo el man de CCS vi que por ejemplo las estructuras devoran compulsivamente la memoria, sin embargo, después de cambiar las estructuras por arrays y otros cambios similares, el mensaje de memoria llena salto al declarar un 50~60% de las variables necesarias
el código es otro tema
en CCS las asignaciones son... "raramente incomprensibles", por ej. no se puede hacer un PIN_A1 = 1, se hace un output_hight( PIN_A1 ), y por otro lado se pueden asignar puertos a variables, algo que debería tener XC (y si lo tiene sería una muy buena noticia) por ej.
#byte puerto_B = 0x06 // hex del puerto RB
puerto_B = 0b11110000;
esto ocupa memoria, tan preciada en CCS porque son referencias (punteros +/-) con su código asociado para la actualización de los datos del puerto
o sea que la migración no es "casi" copiar y pegar, pero bue, tampoco es tan grave, lo único que hice es cambiar las asignaciones y reemplazar los PORTXbits.RXx por PIN_Xx
en manejo de la flash, un completo fracaso, alcancé a migrar aprox u 70% del código y el CCS me dijo que la flash desbordaba, el XC8 FREE llegó a un 99,6% y el PRO a un 65,5%
mi conclusión es que XC8 incluso en la versión free es superior en todos los aspectos a CCS, y pesa mucho que CCS esté tan lejos del estandard ANSI
una aclaración, antes de la migración tenía el XC8 1.21, después de la migración actualicé a 1.30 y los porcentajes de ram y flash bajaron entre un 3 y un 5%
no hay dudas que me quedaré con el XC8, en principio me costó la elección porque no encontraba ayuda en los foros para comenzar, está repleto de temas sobre CCS pero casi nada sobre XC, pero viéndolo me di cuenta que el man es muy completo y casi no hace falta pedir ayuda, cosa que no pasa en CCS,
te cuento de que se trata el proyecto, debería haber comenzado con esto

pero bue,
es un equipo con una serie de temporizadores, 15 en total, que activan/desactivan actuadores, este equipo tiene un 877A con un CD4094 que maneja un LCD 16x2 con un HD44780 donde se muestran los datos de uso y de configuración,
este equipo inicialmente tenía un display de 7 segmentos con 15 leds y decidimos reemplazarlos con el LCD, pero las rutinas para manejar el 4094 y el 44780 me consumían muchísima flash, necesaria para funcionalidades futuras, es por eso que decidí probar con la migración a CCS,
pero ahora optamos por otra solución de bajo costo: reemplazar el 4094 con un 628A, conectarlo al 877 y delegarle al 628 todas las tareas de escritura en el LCD, son $25 de diferencia, un 4094 esta $5 y un 628 $30, el 4094 escribía en un bus de 4 bits (DB4~DB7) con las demoras asociadas (aunque use el strobe), el 628 supongo que es más rápido en ese sentido porque usará el bus completo de 8 bits (DB0~DB7 más RW, RS, E y el pin de encendido de la luz de fondo)
veremos como resulta,
saludos