最近本人在弄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是作为奇偶校验,还是作为接收控制??