Gps parallax lcd pic16f876

Reciba usted un cordial saludo, permítanme presentarme mi nombre es Gustavo Mtz, soy estudiante en México, la razón del presente mensaje es el de solicitar de la manera mas atenta su ayuda, ya que se presenta la situación de que necesito hacer un proyecto para detectar los caracteres de un modulo Parallax GPS Receiver Module 28146, en que este transmite ya la trama completa NMEC atreves de un solo pin, y se desea enviarlas a la computadora utilizando un PIC 16F876, via el protocolo rs232, la captura de la cadena de datos del GPS es por el pin C1, este es un código que estando probando pero no obtengo algún dato significativo, este es el código que estamos usando en la Escuela.
-------------------------------------------------------------------------------------
#include <16f876.h>
#device ADC=10
#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP,NOCPD,NOWRT

//SE DEFINE EL FORMATO PARA LA Tx a 9600 BAUDS VIA RS-232 STANDAR, DADO QUE SON LAS
//PROPIAS LIBRERIAS DEL COMPILADOR CCS, (VER EL LIBRO DE GARDER "PIC C")
//CON UN OSC. 4MHZ Vtx=1200 BAUDS , PARA UN OSC. 10MHZ Vtx=9600

#use delay (CLOCK=20000000)
#use rs232 (BAUD=4800, XMIT=PIN_C6, RCV=PIN_C7)

// SE DEFINE LA DIRECCION DEL PUERTO B COMO ELEMENTO DE ENTRADA SALIDA.
// ASI COMO LA DIRECCION DE MEMORIA DE CADA UNO DE LOS DEMAS PUERTOS A,B,C.
// DICHA INFORMACION SE ENCUENTRA ESPECIFICADA EN EL REGISTRO DE MEMORIA DEL PIC.
// (MAYOR INFORMACIÓN DATA SHEET DE MICROCHIP WWW.MICROCHIP.COM

#use fast_io (b)
#byte porta = 5
#byte portb = 6
#byte portc = 7

// SE INCLUYE EL ENCABEZADO DE LA LIBRERIA PARA LA OPERACION DEL LCD
// POR EL PUERTO B,OBSERVAR PROGRAMA lcd_b.c

#include <lcd_b.c>
#use standard_io(C)
#use standard_io(A)

int j=0;
char cadena[71];
char *buffer=cadena; // UNION entre el puntero y el vector

#int_rda

void recepcion_serie() // Rutina de interrupción por recepción serie
{
buffer[j] = getc();
j++;


}

void main()
{
lcd_init();
lcd_putc("\fPreparando...\n");
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

while(true)
{if(cadena[17]=='V')
{ printf(lcd_putc,"\f ERROR DE\n\t RECEPCION");
delay_ms(10);
}
else
{If(input(pin_a1)==1)
{printf(lcd_putc,"\fTiempo=%c%c:%c%c",cadena[7],cadena[8],cadena[9],cadena[10]);//imprime el tiempo
printf(lcd_putc,"\nFecha=%c%c/%c%c/%c%c",cadena[55],cadena[56],cadena[57],cadena[58],cadena[59],cadena[60]);//imprime la fecha
delay_ms(10);
}
else
{printf(lcd_putc,"\fLat=%c%c%c%c.%c%c%c%c%c%c",cadena[20],cadena[21],cadena[22],cadena[23],cadena[25],cadena[26],cadena[27],cadena[28],cadena[29],cadena[30]); // imprime la latitud
printf(lcd_putc,"\nLon=%c%c%c%c%c.%c%c%c%c%c%c",cadena[32],cadena[33],cadena[34],cadena[35],cadena[36],cadena[38],cadena[39],cadena[40],cadena[41],cadena[42],cadena[43]);//imprime la longitud
printf(lcd_putc,"\n%d",j);
delay_ms(10);
}
}
if(j>=71)
{buffer[71]=(0);
j=0;
}
}
}


------------------------------------------------------------------------------------

Como podrá ver son escasos mis conocimientos en Lenguaje C, pero mi preocupación es que no completo algún programa de prueba para leer los datos y enviarlos tanto al LCD


Por lo anterior quisiera pedirle su ayuda, si me podría ayudar a completar o efectuar dicha función, en algún programa con código en C atreves del código CCS 4.0 con que cuento, para cumplir dicha tarea de capturar los datos del gps via el puerto serie, o bien agrdeceria que me pudieran proporcionar alhun ejemplo para desplegar losdatos en un lcd de 2x16

Sin más por el momento, agradeceré cualquier ayuda, con algún tipo de programa, y me encuentro a sus órdenes en el buzón de correo. gamartinezch@yahoo.com.
 
Atrás
Arriba