如前所述,串口控制寄存器SCON中的SM2为多机通信控制位。串口以方式2或方式3接收时,若SM2为1,则仅当串口接收到的第9位数据RB8为1时,才把数据装入接收缓冲器SBUF,并将接收结束标志RI置1;如果接收到的第9位数据RB8为0,则不会将接收结束标志RI置1,信息将丢失。当SM2为0时,在收到一帧信息后,无论第9位数据TB8是1还是0,都将接收结束标志RI置1,并将接收到的数据装入接收缓冲器SBUF。应用此特性,便可实现多机通信。
如图8-16所示是1个主机和3个从机构成的多机通信系统示意图。STC15单片机串口实现的多机通信只能采用主从方式,在一个多机通信系统中,只能有一个主机,可以有多个从机,主机的RXD端与所有从机的TXD端相连,TXD端与所有从机的RXD端相连,每个从机都有各自的地址。为了区分主机发送的是地址信息还是数据信息,主机用第9位数据TB8作为地址/数据的识别位,地址帧时TB8=1,数据帧时TB8=0。
图8-16 单片机多机通信系统示意图
多机通信的工作过程如下:(www.xing528.com)
1)所有从机初始化程序都将串口编程为方式2或方式3,即9位异步通信方式,且将SM2和REN置1,使每台从机都处于接收状态,同时允许串口中断。
2)主机在和某一个从机通信之前,先将该从机的地址发送给所有从机,主机发出的地址帧的第9位TB8为1。由于各从机的SM2=1,且接收到的地址帧第9位数据RB8为1,所以各从机接收的信息都有效,送入各自的接收缓冲器SBUF,并将接收结束标志RI置1。各从机CPU响应中断,执行中断服务程序,判断主机发送的地址是否和本机地址相符,若为本机地址,则SM2清0,准备接收主机的数据或命令,若地址不一致,则保持SM2为1。
3)接着主机发送数据帧,因为数据帧的第9位TB8为0,所以那些SM2保持为1的从机由于接收到的第9位数据RB8为0,不会将接收结束标志RI置1,数据将丢失。只有地址相符的从机由于已经将SM2清0,故可以将接收结束标志置1,并将8位数据装入接收缓冲器SBUF,从而实现了主机和从机的一对一通信。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。