中易网

单片机与电脑串口通信,无论发什么信息都收到00,求问是怎么回事?代码见下面。

答案:3  悬赏:60  
解决时间 2021-02-15 20:13
单片机与电脑串口通信,无论发什么信息都收到00,求问是怎么回事?代码见下面。
最佳答案
当然老是接收到00了,我给你解释一下:你的串口中断函数不止是在接收数据的时候执行,在执行while(!Ti);时等待发送完成时也会触发中断函数,此时sbuf里面为空,数据之前被取走了。解决办法:把串口中断函数改为:void ser()interrupt 4
{if(Ri)
{Ri=0;
a=sbuf;

if (Ti)

}}
当然老是接收到00了,我给你解释一下:你的串口中断函数不止是在接收数据的时候执行,在执行while(!Ti);时等待发送完成时也会触发中断函数,此时sbuf里面为空,数据之前被取走了。解决办法:把串口中断函数改为:void ser()interrupt 4{if(Ri){Ri=0;a=sbuf;
flag=1;
}if (Ti){}}
再说一句,sbuf里面的数之前被取走的话就为0了,速度给分啊,用手机打了老半天
全部回答
void ser() interrupt 4 //串口中断函数
{
if(RI)
{
RI=0;
a=SBUF; //收到的数据存入缓冲器,然后赋给a
flag=1;
}
}
另外看看你的波特率,应该有问题,9600的话初值应该是0xfd,初始化时也没有设置1T模式,缺省状态应该12T模式的。
TMOD = 0x20;//设置定时器1为工作方式2
TH1 = 0xd9; //装初值,设定波特率为9600
TL1 = 0xd9;
……
d9,这是设定 9600 吗?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天津市有几个私立小学?
我六点半做早操英语
宽城县第一中学怎么去啊,我要去那办事
心理咨询师教材:基础知识,三级二级。请问,
烟点烟 霉三天 这是哪里的俗语
大杠山地址有知道的么?有点事想过去
为什么是萨尔而不是玛尔法里奥领导击败死亡之
四十四岁离婚女人怎么办以后路怎样走
飞鹰摩配地址在哪,我要去那里办事
舞阳县书法培训中心地址好找么,我有些事要过
新星源南雄NO.1地址有知道的么?有点事想过去
有什么方法可以一下子写完作业?
华腾广告地址有知道的么?有点事想过去
玫瑰园美发设计地址在哪,我要去那里办事
我的诺基亚Lumia 520 的音量+键坏了,去普通
推荐资讯
丛林有情狼的拼音怎么拼
我想问谷歌优化具体应该怎么做,跟百度的区别
清波苑-地下车库在哪里啊,我有事要去这个地
广东美隆堡酒业有限公司地址在什么地方,想过
京东商城买的手机里面有音乐?
欧米茄手表维修保养的费用是多少
法人一证通丢失补办需要什么手续
上海新海丰集装箱运输公司石岛分公司在什么地
滨河路消费者协会投诉站在哪里啊,我有事要去
泰勒瓦酒庄在什么地方啊,我要过去处理事情
徐州哪里能种树,正好快到植树节了,办一次学
大家觉得好莱客定制家具怎么样
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?