51单片机通信 的一个简单问题

51单片机通信对书上的一句话不是很理解在方式一工作时:若SM2=1,则只有接收到有效停止位时,RI才置一;若SM2=0,则RB8是接收到到的停止位。哪位高手能帮我解答一下... 51单片机通信 对书上的一句话不是很理解 在方式一工作时:若SM2=1,则只有接收到有效停止位时,RI才置一 ;若SM2=0,则RB8是接收到到的停止位。
哪位高手能帮我解答一下吗?
展开
 我来答
lylxy1965
2011-05-18 · TA获得超过2413个赞
知道小有建树答主
回答量:436
采纳率:100%
帮助的人:216万
展开全部
这需要说明一下单片机串行接收的处理过程:串行通讯内部有一个9位的移位寄存器。单片机中的异步通讯有模式1、模式2、模式3,传输的分别是8位、9位、9位信息,再加上起始位和停止位,其实信息流是10位、11位、11位。RXD线正常情况下是高电平,也就是1,当发生1到0的跳变时说明起始位到来,通讯接收开始启动(以模式1、10位信息为例)。
1、检测到跳变,单片机将会把9位移位寄存器全部置1,也就是1FF;
2、在起始位信息中间的时刻,9位移位寄存器移位左移,将起始位(0)移入最低位;
3、继续采样RXD上的状态,每次采样接收后左移9位移位寄存器同时将得到状态移入最低位;
4、由于初始是整个寄存器各位全部为1,当停止位来临时,9位移位寄存器的最高位为0,此时单片机就认为通讯将结束,触发最后一次移位,这样9位移位寄存器的高8位就是实际的数据,而最低位起始就是停止位信息。
5、移位完成后,单片机开始做最后一件事:将9位移位寄存器的高8位写入SBUF,将最低位写入RB8,然后置RI请求中断。

其中第5步并不是说停止位接收完成后就自然会发生的,需要同时满足两个条件,否则接收到的数据会丢失:
a、RI=0:如果RI=1说明上次中断未处理完,此时不会执行5
b、SM2=0,或者接收到的停止位=1,二者满足其一即可

明白了整个接收过程和触发机制,回过头再看你的问题:
“若SM2=1,则只有接收到有效停止位时,RI才置一”:此时就是上面的条件b的后一种情况,由于是方式1,第10位也就是停止位就是1,所以只要此时RI=0,就会引发RI置1的操作。
“若SM2=0,则RB8是接收到到的停止位”:此时就是上面的条件b的前一种情况,因为此时的9位移位寄存器中的最低位正好是刚移入的停止位,所以将其送到了RB8中。

至于为什么要设定这种条件,需要全面深入的了解4种工作模式后才会有合理的答案,我一下子也不知道该如何去解释,还是你自己先看看书吧。

51单片机的串行通讯接口功能还是很丰富的,比如SM2在多机通讯中的应用就很巧妙,比如模式0的同步移位寄存器功能,等等。只是现在很少有人搞得这么深了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式