//GPS模块计算
#include<reg51.h>
#define uchar unsigned char //宏定义uchar为无符号字符型数据类型,计数范围0~255
#define uint unsigned int //宏定义uint为无符号整型数据类型,计数范围0~65535
#define ulong unsigned long //宏定义ulong为无符号长整型数据类型,计数范围0~429496725
uchar GPS[23]={0xE0,0x07,0x08,0x0D,0x50,0x17,0x3A,0x24,0x78,0x2F,0x4B,0x00,0x00,0x11,0x5A,0x00,0x00,0x01,0x0B,0x4B,0x05,0xA8,0xEA};
sbit LED=P2^7;
sbit YSQ=P3^7;
void main(void)
{
uint gps5;
ulong gps3,gps4,gpsW1;
LED=0;
YSQ=1;
gps5=GPS[5]*128;
gps4=gps4=(unsigned long)GPS[4]*16384;GPS[4]*16384; //此处做数据强制转换
P0=gps4%10000000/1000000;
P0=gps4%1000000/100000;
P0=gps4%100000/10000;
P0=gps4%10000/1000;
P0=gps4%1000/100;
P0=gps4%100/10;
P0=gps4%10; //以上计算得值错误
gps3=GPS[3]*2097152;
P0=gps3%100000000/10000000;
P0=gps3%10000000/1000000;
P0=gps3%1000000/100000;
P0=gps3%100000/10000;
P0=gps3%10000/1000;
P0=gps3%1000/100;
P0=gps3%100/10;
P0=gps3%10; //以上计算得值正确
gpsW1=gps3+gps4+gps5+GPS[6];
P0=gpsW1%100000000/10000000; //取千万位值,得2
P0=gpsW1%10000000/1000000; //8
P0=gpsW1%1000000/100000; //5
P0=gpsW1%100000/10000; //7
P0=gpsW1%10000/1000; //6
P0=gpsW1%1000/100; //6
P0=gpsW1%100/10; //9
P0=gpsW1%10; //8
}
[ 此帖被BI3MEK在2013-03-03 19:39重新编辑 ]