No.75672 作者:侨彬 邮件:yeyangqlg@163.com ID:142061 登陆:2次 文章数:1篇 最后登陆IP:218.19.143.42 最后登陆:2009/9/15 0:46:24 注册:2009/9/14 21:26:42 财富:105 发帖时间:2009/9/14 21:28:11 发贴者IP:218.19.143.37 标题:侨彬:GPS信息选择程序,请高手门帮忙下`` 摘要:No.75672GPS信息选择程序,请高手门帮忙下`` 自己写了一段GPS数据选择的程序,目的是把个需要用的信息放在各个数组中,然后发送出去,但我现在发现在中断里屏蔽掉发送功能之后,个数组中的数据正确,但要是加上发送功能的话,数组中的数据就不正常了,会存在丢失数据的现象,如果把发送程序提到主函数中效果也是一样的~~希望各位高手帮帮忙看下是什么问题? #include <C8051F340.H> #include <string.h> #define uchar unsigned char bit begin;//表示接收到GPS信息开头的'$'字符 1--为接收到 uchar char_count;//定义字符接收计数器 uchar comma_count;//定义逗号计数器 char xdata buffer[50];//定义数据缓存单元 char xdata header[6];//定义头文件字符 char xdata time[9];//定义GPS时间 char xdata weidu[9];//定义纬度 char xdata nbw[1];//定义南北纬 //xdata char jingdu[9];//定义经度 //xdata char dxj[1];//定义东西经度 //xdata char quality[1];//定义GPS卫星质量 /************测试点设置********************/ char test_buffer[20];//测试 uchar test_count;//测试 bit finish;//测试 uchar length1,length2,length3,length4; /******************************************/ void SYSCLK_INIT(void) //使用内部12MHz晶振 { OSCICN=0x83; } void PORT_INIT(void) //配置端口,P1为输出控制口 { XBR0=0X01; //UART0连载P0.4 P0.5 XBR1=0X40; //交叉开关使能 XBR2=0X00; //UART1不连到I/O口 P0MDIN=0XFF;//不配置为模拟输入 P0MDOUT=0XFF; P0SKIP=0XCF;//P0.4 P0.5不被交叉开关跳过,因为要使用串口0 P1MDIN=0XFF;//不配置为模拟输入 P1MDOUT=0XFF; //P1口配置为推挽输出 P1SKIP=0XFF;//被交叉开关跳过 P2MDIN=0XFF; P2MDOUT=0xFF; P3MDIN=0XFF; P3MDOUT=0xFF; } void UART0_INIT() //串口配置 { PCA0MD &=0XBF; //禁止看门狗 SCON0=0X10; //波特率可编程的8位UART,UART0允许接收 TMOD=0X20; //自动装载8位定时器 CKCON=0X08; //定时器1使用系统时钟 TH1=0x98;//波特率57600 TL1=0x98; ES0=1; //开串口0开中断 TR1=1; //定时器1开 EA=1; //开总中断 } void pick_up(char message[],uchar N) //提取信息,message【】为各信息存储数组,N为各信息长度 { uchar i,j,m; j=0; m=N; for (i=0;i <N;i++) { message[j]=buffer[char_count-1-m]; j++; m--; } message[N]='\n'; } ......
>>返回讨论的主题
|