用在多机通信里面,用来标识是地址还是数据,也用在奇偶校验,8 位放
在 SBUF 里面,还有 1 位放在 SM2 里面;第九位用于表示地址或数据,1 表示
后面的是从机地址,0 表示后面的是数据。
在双机通讯中,第九位一般是奇偶校验位。
可以发 9 位数据,8 个数据为,第九位是校验位,校验位有 4 个状态可设
置,基校验,偶校验,总为 1,总为 0。
你条件它总为 1 和总为 0 就可以实现 9 位数据了!
这个以前在做 PC 与 MCU 多机通讯中用过,用第 9 位来对应 MCS-51 的 SM2
位。
在 PIC 的单片机里,有个 9 位数据发送,即在原本的 8 位数据后再加一位,
以此来提升对 485 网络的控制效率。比如说,协议中的第一个字节是地址,假
设这个地址是 0x03。那么 485 网络开启了 9 位(第 9 位设定为 1)发送后,
网络上的 3 号设备只有在接收到第 9 位为 1,且数据位为 0... 在 PIC 的单片机
里,有个 9 位数据发送,即在原本的 8 位数据后再加一位,以此来提升对 485
网络的控制效率。比如说,协议中的第一个字节是地址,假设这个地址是
0x03。那么 485 网络开启了 9 位(第 9 位设定为 1)发送后,网络上的 3 号
设备只有在接收到第 9 位为 1,且数据位为 0x03 的字节后,才确认这条命令
是给本设备的。与此同时,整个网络关闭 9 位发送,给 3 号设备的命令数据均
为正常的 8 位发送。接受到命令后,设备往控制器发送数据,数据均为 8 位。
这样一来,整个 485 网络上的设备,一次轮询命令+设备返回数据,中断的压
力减轻许多了,提升了 485 网络的效率。
第一次接触 modbus 协议,不知道协议是不是支持这样的发送方式,在这