51单片机串行口有关第九数据位的说明

51单片机串行口有关第九数据位的说明,第1张

51单片机串行口的方式2,3是9位数据模式。

这种通信方式用于多机通信,且为主机机结构。当主机发送地址帧时,第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的人,只能说些外行话,干些粗活而已。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10015928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存