单片机的串口通信过程问题,具体问题如下,求解。

 我来答
迪凯特科技(北京)有限公司_ 2025-01-03
展开全部
程序逻辑混乱,出现不确定现象,测试结果时好时坏。理顺一下程序思路,保证采集按键、发送、接收数据、显示为一个完整的周期跟后面其他的操作没有关系.你可以联系迪凯特问问,他家挺好的,下边有链接。
百度网友7247a56
2020-08-20 · TA获得超过4616个赞
知道大有可为答主
回答量:1422
采纳率:92%
帮助的人:490万
展开全部

其实这个是没有为什么的,设计上觉得这样做更好,于是就规定这么做了。

你可以这样理解:由于SM2是专门为了多机通信而设计的,为的是要让从机知道什么时候收到的数据是表示通信地址,从而区分主机是否要和自己通信。SM2=1时,主机发来的第9位数据就可以知道收到的数据是不是自己想要的。

我们先回顾一下TB8、RB8的知识:

SM2,多机通信控制位,主要用于方式2和方式3。当从机的SM2=1时,从机可以利用收到的RB8来控制是否置位RI(产生中断请求)。RB8=0时,表示收到的是数据帧,收到的信息丢弃,不产生中断;RB8=1时,表示收到的是地址帧,收到的数据要进入SBUF,并置位RI,产生中断,在中断服务程序中将数据从SBUF读走,判断该地址帧是否与本机地址一致。若不一致,则保持SM2=1,继续监听。若一致,则清零SM2,以便接收数据帧)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并置位RI,产生中断,在中断服务程序中将数据从SBUF读走处理(即此时RB8不具有控制RI是否置1的功能)。

通过控制SM2,可以实现多机通信。

SM2=1时,从机只想要接收RB8=1的数据(地址帧)。

如果从机要接收主机发来的数据帧,从机要把SM2清零。

从机收完数据帧后,需要把SM2置1,以便下一次与主机通信。

RB8就是主机发来的第9位数据。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迪凯特科技(北京)有限公司_
2025-01-03 广告
单片机串口通信数据丢失的原因可能如下:1. 按键通过串口发送对应命令,第一次按按键串口发送的指令正确且能把数据正确的显示出来,在第二次按按键串口发送的指令出现丢失的状况,可能是因为串口通信的波特率设置不正确。2. 如果单片机和外部设备的波特... 点击进入详情页
本回答由迪凯特科技(北京)有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式