找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

奇怪的单片机RI接收中断标志

查看数: 2918 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-10-10 14:17

正文摘要:

本帖最后由 sddboy 于 2020-10-11 08:07 编辑 用串口助手   给单片机    发数据测试 发现  如果第一次 发送   000000 ,六个零 就是    30  30& ...

回复

ID:88256 发表于 2020-10-10 19:54
sddboy 发表于 2020-10-10 17:47
while(RI==0){},如果不置位,RI=0满足条件,等待死循环,没什么问题吧,
照理我发送 任意数据 应该 ...

你这样写总感觉怪怪的,也不好看程序。
发6个字节才能触发RI,应该还是你的程序有问题,波特率是否计算错误?把完整程序发上来看看吧
ID:187947 发表于 2020-10-10 17:47
hhdsdy 发表于 2020-10-10 15:54
必须搞清楚,单片机在接收到数据就会自动触发 RI 置1,而不是靠程序,然后要用程序人工 RI 清0。
while(RI ...

while(RI==0){},如果不置位,RI=0满足条件,等待死循环,没什么问题吧,
照理我发送 任意数据 应该会触发RI置1啊,可是初次串口通信 我必须发6个字节 才能触发RI 置位
搞不懂
ID:88256 发表于 2020-10-10 15:54
必须搞清楚,单片机在接收到数据就会自动触发 RI 置1,而不是靠程序,然后要用程序人工 RI 清0。
while(RI==0)这句并不是判断单片机是否收到数据0,RI 只是一个接收到数据的标志,而单片机收到的数据会自动保存在SBUF里,所以你的程序应该稍微改一下(判断num是什么数值,并且这个只是判断一个而不是6个)

if(RI)
{
RI = 0;
num=SBUF;

用num判断数据并执行相应的操作

}



小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表