关于51单片机多机通讯问题求高手

我在做单片机多机通讯试验中,遇到下面代码不解,求高手指点aa=SBUF;/*接收状态*/if((aa&0x08)==0x08){TB8=1;err();}/*若命令未被接... 我在做单片机多机通讯试验中,遇到下面代码不解,求高手指点
aa=SBUF; /* 接收状态 */
if((aa&0x08)= =0x08) {TB8=1; err( );} /* 若命令未被接收,发复位信号 */
请问为什么是if((aa&0x08)= =0x08)来判断命令是否被接受,求高手指点!!
aa&0x08不明白为什么是这样,0x08是怎么来的???,因为如果正确接受,从机回00h,
展开
 我来答
做而论道
高能答主

2011-04-04 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
串行通信,每次传输8位二进制数字。
这8位二进制数字,有256种,可以分别代表256操作命令。
编程的人,都是自己规定,各个命令的数值,不用顾及别人是否理解。
从楼主给出的程序来看,0x08,就是一个别人编好的命令字符。
知道它能这么用,就行了,不用琢磨0x08是怎么来的。
迪凯特科技(北京)有限公司
2023-07-28 广告
单片机串口通信数据丢失的原因可能如下:1. 按键通过串口发送对应命令,第一次按按键串口发送的指令正确且能把数据正确的显示出来,在第二次按按键串口发送的指令出现丢失的状况,可能是因为串口通信的波特率设置不正确。2. 如果单片机和外部设备的波特... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
seuzhouww
2011-04-03 · TA获得超过1386个赞
知道小有建树答主
回答量:658
采纳率:0%
帮助的人:306万
展开全部
看样子,这段代码不是你亲自写的啊。你需要索要开发人员的相关串口通信协议。
我猜这个通信协议约定:首个字节表示命令,命令字(字节)的第4位固定为1。所以在接收程序的开始,就立即判断此位。只有正确时,才RB8=0,开始接收后续数据。否则,直接广播err命令。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
langqiong261
2011-04-03 · TA获得超过1161个赞
知道小有建树答主
回答量:1175
采纳率:0%
帮助的人:1193万
展开全部
应该说这个是一个类似握手协议,一般的串口收发硬件上是不可靠,为了保证可靠性,利用软件来完成,例如:可以增加标志位,告诉你什么是数据的开始,什么是数据的结束。 也可以使用握手,只有当成功接受或者发送时返回一个标志位。
这里应该是双方规定的一个值,或者用的另外一个模块(例如gsm)返回的标志位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dh...s@163.com
2011-04-03 · TA获得超过136个赞
知道答主
回答量:162
采纳率:0%
帮助的人:107万
展开全部
aa是一个标志位, 是程序在接收的地方赋值了的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ahong2hao
2011-04-04 · 超过13用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:39.9万
展开全部
需要完成的程序才能回到你的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
志远自动化
2011-04-08
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
注意,收到的第九位数据没有存储在SBUF寄存器,而是在SCON里面的RB8位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式