Sip, cada vez solucionan los bugs que tiene el compilador de CCS.D@rkbytes he probado tu programa y todo anda OK.
Mi programa ahora utilizando las funciones PRINTF, SPRINTF y STRCAT anda bien. Resulta que el problema era la versión del CCS. La versión en la que han arreglado todo ésto es a partir de la 5.013.
Ya tiene tiempo que no lo actualizo, ahora tengo la versión 5.021
Yo tuve un problema similar al trabajar con recepción de cadenas.Tengo otro pequeño o gran problema. Resulta que cuando envío primeramente un dato de solicitud del estilo "$ADQ,P01,CH0\r" o "$ADQ,P01,CH1\r" y luego un dato de solicitud del estilo "$TST,P01\r" SOLO ME RESPONDE SIEMPRE al primer dato.
Y si lo hago al revés primero le envío "$TST,P01\r" y luego "$ADQ,P01,CHx\r" solo me hace el primero.
Y siempre responde solo al primer tipo de dato que le envío.
Si luego le envío otro tipo de dato ya no responde.
Utilice un buffer y las instrucciones gets y strcat.
El resultado fue que al recibir los datos, funcionaba inversamente.
Es decir, si yo mandaba "prender" se activaba la sentencia apagar.
Hasta ahora no lo he podido resolver.
Pues si quieres lo podría revisar para ver si encuentro algo raro.¿Si te vuelvo a dar el código podrías ayudarme a solucionar ésto?
Yo ya no veo cual es el fallo, amigo.
La solución que he probado es meterle un reset_cpu() una vez envío los datos y entonces va bien. Pero no es la mejor solución esta.
Cuando comentan el código es más fácil entender que es lo que quieren hacer.
Espero que tengas comentados los bloques del programa.