Deberías de recibir la cadena y luego visualizarla, también disminuir la velocidad de la comunicación, porque no te van a dar los tiempos para recibir y visualizar en el lcd, entonces no alcanzas a leer el puerto y se bloquea por sobre-escritura.
Saludos!
Asegúrate de que tienes bien configurada la velocidad de la UART y que es la misma para el GPS (velocidad, bits de datos y paridad)
La mayoría de los que he utilizado hasta ahora para sicronizar la hora y fecha de los equipos suelen venir de serie con una velocidad de 9600,8,N,1.
#INCLUDE<16F886.h>
#device adc=10
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP
#USE RS232(BAUD= 57600,XMIT= PIN_C6,RCV= PIN_C7,PARITY=N,BITS=8, stream=canal1/*FLOAT_HIGH,TIMEOUT=3000*/)
#DEFINE USE_PORTB_LCB TRUE
#INCLUDE "LCD.C"
//char variable;
char buffer[20];
int i;
void inicializar(void);
void inicializar(void){
LCD_INIT(); //Se inicilaiza la pantalla LCD.
}
VOID MAIN()
{
inicializar();
LCD_PUTC("\fCadena: ");
for(i=0;i<20;i++)
buffer[i] = fgetc(canal1);
for(i=0;i<20;i++)
printf(LCD_PUTC,"%c",buffer[i]);
}
#INCLUDE<16F886.h>
#device *=16 ADC=10
#USE DELAY(CLOCK=20000000)