Hola como estas, sabes yo tenia el mismo problema para manejar un serial servo pololu y me di cuenta q al enviar los codigos con el %x el pic no los envia en forma serial, en fin, creo q te podria ayudar esto que hicimos con un amigo para poder enviar tus datos a la LCD y me avisas si te funciono, yo tengo la misma solo que esta prestada a un amigo y aun no me la devuelve pero se la preste xq ni siquiera pude cambiarle de GFX a modo serial... bueno ahi te va....
void servo(int x, y)
{
int i=0;
int pololu[7]={0x80,0x01,0x04,0x00,0x00,0x7F,0x15};
pololu[3]=x;
pololu[4]=y;
for(i=0;i<6;i++)
{
putc(pololu);
delay_ms(5);
}
}
void main(void) {
int z;
byte b0=128,b1=1,b2=4,b3=0,b4=36,b5=127;
//byte b0=128,b1=1,b2=4,b3=0,b4=36,b5=127;
int a=5;
for(z=0;z<10;z++)
{
output_toggle(PIN_A0);
delay_ms(100);
}
delay_ms(2000);
while(true)
{
servo(0,32);
delay_ms(100);
}
// estos son los datos que quise enviarle desde el pic pero de esta manera nunca funciono, probe la que hicimos y si envio
//puts(string);
//printf("%c%c%c%c%c%c%c",0x80,0x01,0x04,0x00,0x0A,0x7F,0x00);
//fprintf("%c%c%c%c",0x80,0x01,0x04,0x16);
//fprintf("%c%c",0x0A,0x7F);
//fprintf("%2LX %2X %2X %2d %2d %2d",b0,b1,b2,b3,b4,b5);
//fprintf("\n\r",b0,b1,b2,b3,b4,b5);
}
el dato que esta en la matriz al final es el que me arreglo la vida.... me avisas si funciono ok... saludos y suerte