Pikman, no tengo ninguna intención de ofender, pero creo que hasta entiendo que el CCS se lie con esa linea de programa.
Después de 25 años haciendo programas, 15 de los cuales, son en equipo, si tengo clara una cosa, es que las lineas de código
místicas, solo provocan quebraderos de cabeza, especiálmente al que las tiene que arreglar y no las ha hecho.
Aunque gastes algún byte más, prueba a hacerla pasito a pasito, y estoy casi seguro de que desaparece el error de compilación.
"dtmf[indice]=dtmf[indice]+tabla[swap(INPUT_C() & 0xF0)];"
int valor, entrada;
entrada=input_c();
valor = entrada & 0xF0;
dtmf[indice]=dtmf[indice]+tabla[valor];o algo así ...
PalitroqueZ, aunque no he probado con el CCS4, hay una instrucción en la librería del LCD ... lcd_gotoxy(x,y) ... que, al menos en las versiones anterióres funciona estupéndamente.
Bueno, lo mismo, como aquí estáis un poco obsesionados con ahorrar memoria os parece una barbaridad, pero, en fín, queda dicho.
Al menos en mis "local dealers", creo que entre el 16f873 y el 18f876 hay una diferencia de 1 euro, lo mismo que entre el 18f242 y el 18f252 ...
Yo solo moñeo con los Pics, pero en fín, si andamos cortos de memoria, seguro que hay otras soluciones antes que las lineas de código místicas ... así, a botepronto, se me ocurre, comprar el siguiente de la familia.
De todas formas, con el
putc() solo no creo que funcione, el stream por defecto de PrintF es la Usart ...
así que:
lcd_putc("\fPrueba CCS");o
printf(lcd_putc, "\f%lu ", cuenta);