SR-87 GPS Module
This a driver file to interfce SR-87 GPS module with PIC microcontroller(Compiled in CCS PICC)
#use rs232(baud=4800,xmit=PIN_C6,rcv=PIN_C7,bits=8,stop=1,parity=n,stream=GPS,force_sw)
#include<string.h>
#include<stdlib.h>
//char latitude[17],longitude[17],buffer[17];
// Read the lattitude and longitude
void get_position()
{
int8 rx_count,rx_buffer;
rx_count=0;
strcpy(buffer,"GPRMC");
do
{
rx_count=0;
output_low(PIN_A5);
while(fgetc(GPS) !='$');
while((rx_buffer=fgetc(GPS))!=',')
{
latitude[rx_count]=rx_buffer;
rx_count++;
}
latitude[rx_count]='\0';
}while(strcmp(latitude,buffer));
//*****************************************************************
while(getc(GPS)!=',');
while(getc(GPS)!=',');
rx_count=0;
do
{
rx_buffer=fgetc(GPS);
latitude[rx_count]=rx_buffer;
rx_count++;
}while(rx_buffer!=',');
latitude[rx_count]=fgetc(GPS);
rx_count++;
latitude[rx_count]='\0';
rx_buffer=fgetc(GPS);
rx_count=0;
do
{
rx_buffer=fgetc(GPS);
longitude[rx_count]=rx_buffer;
rx_count++;
}while(rx_buffer!=',');
longitude[rx_count]=fgetc(GPS);
rx_count++;
longitude[rx_count]='\0';
}
//wait untill a valid data
void get_fix()
{
int8 rx_count,rx_buffer;
rx_count=0;
strcpy(buffer,"GPRMC");
do
{
do
{
rx_count=0;
while(fgetc(GPS) !='$');
while((rx_buffer=fgetc(GPS))!=',')
{
latitude[rx_count]=rx_buffer;
rx_count++;
}
latitude[rx_count]='\0';
}while(strcmp(latitude,buffer));
while(fgetc(GPS) !=',');
rx_buffer=fgetc(GPS);
}while(rx_buffer !='A');
}