View Single Post
Old 08-05-2012, 07:39 PM   #7
khuongbkhn
Nhập môn đệ tử
 
Tham gia ngày: Mar 2012
Bài gửi: 2
:
Code thu GPS

Chào mọi người. Mình đang làm đề tài xử lú bản tin GPS. Nhưng mà code vẫn chưa chạy không biết sai ở đâu? Mong mọi người chỉ giúp dùm. Thanks nhiều!

#include "C:\Documents and Settings\FangFang\My Documents\code.h"
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA_PORT D
#define LCD_TYPE 2
#include <lcd.c>
#byte SPBRG =0x99
#byte RCSTA =0x18
#byte PIR1 =0x0C
#byte RCREG =0x1A
#bit RCIF = 0x0c.5
#bit SPEN =0x18.7
#bit CREN =0x18.4
unsigned char GPSbuffer[70];
int8 position[11];
int8 check=0,i;
unsigned char GPRMC[7]="$GPRMC";
void find_comma()
{
int8 couter=0;
for(i=0;i<70;i++)
{
if(GPSbuffer[i]==',')
{
position[couter]=i;
couter++;
}
}
}
#INT_RDA
void receive_GPSbuffer()
{
char c;
c=getc();
if(check==69)
return;
GPSbuffer[check++]=getc();
if(check<7)
if(GPSbuffer[check-1]!=GPRMC[check-1])
check=0;
}
void time()
{
int8 i;
i=position[0];
printf(lcd_putc,"TIME: %c%c:%c%c:%c%c",GPSbuffer[i+1],GPSbuffer[i+2],
GPSbuffer[i+3],GPSbuffer[i+4],GPSbuffer[i+5],GPSbuffer[i+6]);
delay_ms(1000);
}
void latitude()
{
int8 i;
i=position[2];
if ((GPSbuffer[i+11]=='N') || (GPSbuffer[i+11]=='S'))
printf(lcd_putc,"LAT: %c%c.%c%c %c",GPSbuffer[i+1],GPSbuffer[i+2],GPSbuffer[i
+3],GPSbuffer[i+4],GPSbuffer[i+11]);
else
printf(lcd_putc,"LAT: %c.%c%c %c",GPSbuffer[i+1],GPSbuffer[i+2],GPSbuffer[i
+3],GPSbuffer[i+10]);
delay_ms(1000);
}
void longtitude()
{
int8 i;
i=position[4];
if ((GPSbuffer[i+12]=='W') || (GPSbuffer[i+12]=='E'))
printf(lcd_putc,"LONG: %c%c%c.%c%c %c",GPSbuffer[i+1],GPSbuffer[i+2],GPSbuffer[i
+3],GPSbuffer[i+4],GPSbuffer[i+5],GPSbuffer[i+12]);
else
printf(lcd_putc,"LONG:%c%c.%c%c %c",GPSbuffer[i+1],GPSbuffer[i+2],GPSbuffer[i
+3],GPSbuffer[i+4],GPSbuffer[i+11]);
delay_ms(1000);
}
void main()
{
lcd_init();
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
set_tris_b(0x00); // Set Port B as output port
set_tris_a(0x00);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
while (1)
{
//receive_GPSbuffer();
if (check==69)
{
find_comma();
time();
lcd_putc("\f");
longtitude();
lcd_putc("\f");
latitude();
lcd_putc("\f");
check=0;
}
}

SPBRG=spbrg_value; // Fill SPBRG register to set the baud rate
SPEN=1; // To activate serial port (Tx and Rx pins)
CREN=1; // To enable continuous reception

}
khuongbkhn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn