Solo mirando veo varias cosas:
Cadena[i]=ch;
i++;
if(i>600)i=0;
- meter 600 caracteres en 60 lugares significa buffer overflow.
- Luego tenes la forma de comparar cadenas como que tenes MUY seguro donde van a estar ubicados los caracteres. Lo cual no siempre es asi, pero que tambien me puedo equivocar.
- Tu forma de comunicarte con el modulo sin siquiera saber si el modulo respondio correctamente o no
- Y finalmente Todo esto suponiendo que estes configurando el ESP correctamente y realmente estes recibiendo.
- Luego cosas menores como estas usando "ch" una variable que no tiene sentido y solo estas ocupando un byte mas. Lo cual veo que se te complica lo que es la programacion en C.
- Usando set_tris, luego de los setup_x, imagino que estarias sobreescribiendo lo que ya el codigo de setup_x hizo. Y ademas no sirve de nada por que no estas usando FAST_IO y CCS va a hacer lo que quiera con el tris.
- El codigo setup() nunca se llama.
Es lo que encuentro ahora, y que pienso que tendrias que arreglar. Pero eso queda a decision tuya.