这种通信方式用于多机通信,且为主机机结构。当主机发送地址帧时,第9位TB8=1,接收端的从机收到第9位,RB8=1,就是为地址帧。
这第9位也可以作为奇偶校验位来发送,但要写程序来计算TB8的状态,来实现奇偶校验。
其实,第9位数据位的通信方式,在实际应用却很少用的。大多机通信结构中,通常用Modbus协议,解决设备地址问题。而奇偶校验也少用,常用校验字节,或CRC校验,比奇偶校验更可靠。
由寄存器SCON来控制,其中的标志位TB8就是发送的第九位数据,在发送数据前,先将这位置1或置0,再发送时,第九位的数据就是它了。还有一个标志位RB8,是接收的第九位数据,接收一个字节数据后,要读出这个位,就知道接收的第九位数据了。
在串口通信规范里面,第九位是奇偶校验位,是可选的。如果是PC机,以及使用硬件串口通信芯片的机子,这奇偶校验位,是硬件自动加上的,只需用软件设置一下而已。
如果是单片机的板子,这第九位,可就需要用软件来发送,使用起来就特别灵活。
如果是51单片机,应该这样编程:
//-----------------------------------
ACC = char buf[0] //取来待发送数据到ACC,即可生成校验位
TB8 = P //把校验位送到待发送的第九位
//如果这第九位用来区分地址和数据,也可以用:
TB8 = 1
//或
TB8 = 0
SBUF = ACC //发送8位数,捎带出去第九位
//-----------------------------------
要想弄这些,必须懂硬件和汇编语言,仅仅懂C的人,只能说些外行话,干些粗活而已。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)