c51串口
发布时间:2010-06-14 16:01:57 文章来源:www.iduyao.cn 采编人员:星星草
c51串口求助!
串口接收程序如下
void rec_gps(void) interrupt 4 {
uchar str;
uint i,k;
k=0;
i=0;
if(RI != 1)
return;
do
{
if (RI)
{
RI=0;
str=SBUF;
recv_data[i++]=str;
if (str=='A') //数据接收到A
{
if (i>=16) 我命令数出来应该是i=18;但实际是只有1=16的时候这个IF才是真的
{
i=0;
if ((recv_data[3]=='R')&&(recv_data[4]=='M') &&(recv_data[5]=='C')) {
recv_sucess_flag = 1;
// flag1 = 1 ;
return;
}
}
}//if str=='A'
else
recv_sucess_flag = 0;
}//if RI
else
k++; //防止串口死机
}
while((i < 18) && (k < 65535));
}
接收数据处理程序
void data_recv_to_ds12c887(void)
{
int shigps,fengps,miaogps;
uchar i,j ;
IE = 0 ;
i=recv_data[7] & 0x0f;
j=recv_data[8] & 0x0f;
shigps = (i<<4) | j;
i=recv_data[9] & 0x0f;
j=recv_data[10] & 0x0f;
fengps = (i<<4) | j;
i=recv_data[11] & 0x0f;
j=recv_data[12] & 0x0f;
miaogps = (i<<4) | j;
if(shigps<0x16)
{
shigps = shigps + 0x08;
}
else
{
shigps = shigps - 0x16;
}
// if((shigps==shi)&&(fengps==fen)&&(miaogps>(miao--))&&(miaogps<(miao++)))
// {
write_ds(0,miaogps); //将GPS调整时间写入DS
write_ds(2,fengps);
write_ds(4,shigps);
RXDGPS = 1 ;
TXDGPS = 1 ;
// flag1 = 0 ;
// }
// else
// {
//置gps授时误差标志位
// }
IE = 0x90 ;
}
使用串口小助手通过232发送命令如下:
$GPRMC,021529.000,A
单片机是NXP的89V51
求解我收到数据处理后的shigps , fengps ,miaogps 和我发送的命令中的021529 数据不一致 ,且本人笨没想不通,求大牛们帮我看看!!
PS:有人和我说串口发送逗号,51单片机是不识别的??不会吧?
------解决方案--------------------
你中断里面处理时间很长,上一次发送的字符还没接受完毕,下一次接种中断又来了
------解决方案--------------------
串口中断处理太长了,要短最好就1到2句话,主要修改标志位。
------解决方案--------------------
数据处理放在主函数 中断只置位标志位
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
c51串口求助!
串口接收程序如下
void rec_gps(void) interrupt 4 {
uchar str;
uint i,k;
k=0;
i=0;...
-
win7运行CodeWarrior IDE出错
我的本安装了CodeWarrior IDE,一运行就会出现提示:
IDE 4.1 Build 0622 已停止工作。
或者提示:
Unha...
-
关于AT指令控制GSM短信猫的问题
C/C++ code
打开串口
BOOL CComm::OpenComm(const char* pPort,
int nBaudRa...
-
关于51中断求教
各位大虾,我现在要做一个GPS授时的小程序,遇到如下困惑,求大虾们解答:
1 线路板上带有时钟芯片,平时显示时间是...
-
atd指令拨号,如何判断电话状态
在网上找了许久,终于找到一位仁心解决方案,这个指令是可以得到手机当时的状态,但是不管是空号、欠费、...
-
知道在哪跑飞,跑飞的详细原因有谁能解释一下。
今天出现这样的问题:
将这个中断函数注释掉:
#pragma vector=USCI_B2_VECTOR
__in...
-
51程序移植到2051
大牛们,我想吧一个51的程序移植到2051中,用NXP的89V51芯片时用到的I/O口只有P1.0 P1.1 P1.2 3三个,我现在移植到AT...
-
一道课程设计题:基于单片机的波形发生器的设计
设计要求:
1.能产生正弦波、方波、三角波、锯齿波等4种周期性波形,并且可通过调节变...
-
解析单片机最小系统及相关电路
原文出自:电子发烧友论坛——单片机论坛[color=#FF0000][/color]
单片机最小系统单片机最小系统介...
-
单片机学习书籍大全推荐
在电子发烧友论坛里看到了单片机学习资料汇总,特地搜罗了过来,不知道大家看过几本,也希望让需要学习的人 都...