51单片机的串行通信是怎么工作的??

最近本人在弄DMX512通信协议,所以现在很想知道51单片机的串行通信是怎么工作的??主要想了解那个过程(执行什么的步骤,比如:单片机的什么先发生变化~~~再什么发生变化... 最近本人在弄DMX512通信协议,所以现在很想知道51单片机的串行通信是怎么工作的??主要想了解那个过程(执行什么的步骤,比如:单片机的什么先发生变化~~~再什么发生变化~~~~最后~~~~),弄懂了那个我自己就用汇编写串口程序,在这里向各位大虾们谢谢了。还有下面的两段话,哪一段是正确的:

SM2:多机通信控制位,由软件设定。串行口的方式2和方式3适用于多机通信。在方式2或方式3中,当SM2=1,若接收到的第9位数据(RB8)为0,则不能置位RI;只有收到RB8=1,才置位RI。SM2=1用于多机通信中,只接收地址帧,不接收数据帧。而当SM2=0时 ,只要接收到一帧信息(无论是地址还是数据),RI都被置位。双机通信时,通常使SM2=0,在方式0中,SM2必须为0。

SM2在方式2或方式3下,如果该比特为0,串口以单片机发送或接收方式工作,TI和RI以正常方式被激活,但不引起中断请求;若该比特为1并且SCON中的RB8也被置位时,RI不仅被激活而且可以向CPU请求中断(疑问:这时说中断请求,是不是说,一帧数据接收完毕,RI被置1??)。方式2的接收过程也与方式1类似,但是方式1中的RB8存放的是停止位,方式2中存放的是第9位数据位。所以在方式2必须满足接收有效字符的条件是:RI=0和SM2=0或者接收到的第9位数据为1。第一个条件是要求SBUF为空,即用户应预先读走SBUF中的信息,好让接收电路确认它已空。第二个条件是提供了利用SM2和第9个数据位共同对接收加以控制。若第9个数据位是奇偶校验,则可让SM2=0以确保串口能可靠接收;如果是接收控制,则可让SM2=1,然后依靠第9位数据的状态来确定接收是否有效。
我用一台DMX512电脑控制台来控制灯具(几十台灯具),那是不是属于多机通信呢,那灯具里面的接收程序(方式是工作方式2),是不是要把SM2设置成1呢??还有那个RB8是作为奇偶校验,还是作为接收控制??
展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
单片机其实就是一种可以由人对它进行编程从而通过它控制一些与它相连的器件的微型处理器。通俗地说就是你用某种特定的语言在特定的软件里(如keil)编写好一段程序后通过一定的方法转到一个芯片里(这个芯片就是单片机),给芯片上电后它就可以根据你编的程序控制它所连接的其他器件了。希望能帮到你了… 更专业的解答可联系意法半导体,产品服务:意法半导体单片机产品线拥有业界宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向.目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超…
yaotongsuo
2009-07-26
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
兄弟,你可以看看书呀,书上不是说了嘛。这么多字要人打出来!!!
方式0
8位移位寄存器输入/输出方式。多用于外接移位寄存器以扩展I/O端口。波特率固定为fosc/12。其中,fosc为时钟频率。在方式0中,串行端口作为输出时,只要向串行缓冲器SBUF写入一字节数据后,串行端口就把此8位数据以等的波特率,从RXD引脚逐位输出(从低位到高位);此时,TXD输出频率为fosc/12的同步移位脉冲。数据发送前,仅管不使用中断,中断标志TI还必须清零,8位数据发送完后,TI自动置1。如要再发送,必须用软件将TI清零。串行端口作为输入时,RXD为数据输入端,TXD仍为同步信号输出端,输出频率为fosc/12的同步移位脉冲,使外部数据逐位移入RxD。当接收到8位数据(一帧)后,中断标志RI自动置。如果再接收,必须用软件先将RI清零。
方式1
10位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位)和1个停止位(1)。波特率由定时器T1的溢出率和SMOD位的状态确定。一条写SBUF指令就可启动数据发送过程。在发送移位时钟(由波特率确定)的同步下,从TxD先送出起始位,然后是8位数据位,最后是停止位。这样的一帧10位数据发送完后,中断标志TI置位。在允许接收的条件下(REN=1),当RXD出现由1到O的负跳变时,即被当成是串行发送来的一帧数据的起始位,从而启动一次接收过程。当8位数据接收完,并检测到高电乎停止位后,即把接收到的8位数据装入SBUF,置位RI,一帧数据的接收过程就完成了。方式1的数据传送波特率可以编程设置,使用范围宽,其计算式为:波特率=2SMOD/32×(定时器T1的溢出率)
其中,SMOD是控制寄存器PCON中的一位程控位,其取值有0和l两种状态。显然,当SMOD=0时,波特率=1/32(定时器Tl溢出率),而当SMOD=1时,波特率=1/16(定时器T1溢出率)。所谓定时器的溢出率,就是指定时器一秒钟内的溢出次数。
方式2,3
11位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位),1个附加的第9位和1个停止住(1)。方式2和方式3除波特率不同外,其它性能完全相同。方式2,3的发送。方式2和方式3与方式l的操作过程基本相同,主要差别在于方式2,3有第9位数据。
发送时,发送机的这第9位数据来自该机SCON中的TB8,而接收机将接收到的这第9位数据送入本机SCON中的RB8。这个第9位数据通常用作数据的奇偶检验位,或在多机通信中作为地址/数据的特征位。方式2和方式3的波特率计算式如下:方式2的波特率=2SMOD/64×fosc
方式3的波特率=2SMOD/32×定时器T1的溢出率由此可见,在晶振时钟频率一定的条件下,方式2只有两种波特率,而方式3可通过编程设置成多种波特率,这正是这两种方式的差别所在。
意法半导体(中国)投资有限公司
2021-01-14 广告
串行通信分为查询方式和中断方式; TI和RI分别是8位串行口控制寄存器SCON的第1位和第0位; 1.TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其它方式中,在发送停止位之初由硬件置位。因此,TI=1是发送完一帧数据的... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
数码软件咨询专家
2009-07-27 · TA获得超过228个赞
知道答主
回答量:137
采纳率:0%
帮助的人:29.4万
展开全部
两段都对啊
SM2是一个控制位,由软件控制,方式0一般不用,当处于方式2和3时,因为传输的数据有11位,数据位有9位,有效数据8位,第9位数据位是判定是否丢弃前8位数据用的,如果为0,则丢弃,前提是SM=1.
关于你的疑问(疑问:这时说中断请求,是不是说,一帧数据接收完毕,RI被置1??)是的,因为此时SM2=1,并且RB8=1(即接收到的第9位数据为1),所以RI置位并且产生中断。如果程序中设置SM2=0的话,此时就不能置位产生中断了,这就是SM2的作用,尤其是在多机通讯时,用处很大,控制哪台下位机该收数据,哪台不该收。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sanjiaozhou567
2009-07-26
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
方式0
8位移位寄存器输入/输出方式。多用于外接移位寄存器以扩展I/O端口。波特率固定为fosc/12。其中,fosc为时钟频率。在方式0中,串行端口作为输出时,只要向串行缓冲器SBUF写入一字节数据后,串行端口就把此8位数据以等的波特率,从RXD引脚逐位输出(从低位到高位);此时,TXD输出频率为fosc/12的同步移位脉冲。数据发送前,仅管不使用中断,中断标志TI还必须清零,8位数据发送完后,TI自动置1。如要再发送,必须用软件将TI清零。串行端口作为输入时,RXD为数据输入端,TXD仍为同步信号输出端,输出频率为fosc/12的同步移位脉冲,使外部数据逐位移入RxD。当接收到8位数据(一帧)后,中断标志RI自动置。如果再接收,必须用软件先将RI清零。
方式1
10位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位)和1个停止位(1)。波特率由定时器T1的溢出率和SMOD位的状态确定。一条写SBUF指令就可启动数据发送过程。在发送移位时钟(由波特率确定)的同步下,从TxD先送出起始位,然后是8位数据位,最后是停止位。这样的一帧10位数据发送完后,中断标志TI置位。在允许接收的条件下(REN=1),当RXD出现由1到O的负跳变时,即被当成是串行发送来的一帧数据的起始位,从而启动一次接收过程。当8位数据接收完,并检测到高电乎停止位后,即把接收到的8位数据装入SBUF,置位RI,一帧数据的接收过程就完成了。方式1的数据传送波特率可以编程设置,使用范围宽,其计算式为:波特率=2SMOD/32×(定时器T1的溢出率)
其中,SMOD是控制寄存器PCON中的一位程控位,其取值有0和l两种状态。显然,当SMOD=0时,波特率=1/32(定时器Tl溢出率),而当SMOD=1时,波特率=1/16(定时器T1溢出率)。所谓定时器的溢出率,就是指定时器一秒钟内的溢出次数。
方式2,3
11位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位),1个附加的第9位和1个停止住(1)。方式2和方式3除波特率不同外,其它性能完全相同。方式2,3的发送。方式2和方式3与方式l的操作过程基本相同,主要差别在于方式2,3有第9位数据。
发送时,发送机的这第9位数据来自该机SCON中的TB8,而接收机将接收到的这第9位数据送入本机SCON中的RB8。这个第9位数据通常用作数据的奇偶检验位,或在多机通信中作为地址/数据的特征位。方式2和方式3的波特率计算式如下:方式2的波特率=2SMOD/64×fosc
方式3的波特率=2SMOD/32×定时器T1的溢出率由此可见,在晶振时钟频率一定的条件下,方式2只有两种波特率,而方式3可通过编程设置成多种波特率,这正是这两种方式的差别所在。
多机通讯是由SM2控制的,如果不用多机通讯可以一直置为0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式