6.4多机通信 6.4.1多机通信通信的工作原理 多个单片机可利用串行口进行多机通信,常采用图6-21的主 从式结构。系统有1个主机(单片机或其他有串行接口的微机) 和多个单片机组成的从机系统。主机RX①与所有从机的TXD端相 连,TXD与所有从机的RXD端相连。从机地址分别为01H、02H和 03H。 TXD RXD 主机 TXD RXD TX①RXD TX①RXD 1#AT89S52 2#AT89S52 3#AT89S52 从机 从机 从机 图6-21 多机通信系统示意图 16
16 6.4 多机通信 6.4.1 多机通信通信的工作原理 多个单片机可利用串行口进行多机通信,常采用图6-21的主 从式结构。系统有1个主机(单片机或其他有串行接口的微机) 和多个单片机组成的从机系统。主机RXD与所有从机的TXD端相 连,TXD与所有从机的RXD端相连。从机地址分别为01H、02H和 03H。 16 图6-21 多机通信系统示意图
主从式是指多机系统中,只有一个主机,其余全是从机。主 机发送的信息可以被所有从机接收,任何一个从机发送的信息, 只能由主机接收。从机和从机之间不能进行直接通信,只能经 主机才能实现。 多机通信的工作原理: 要保证主机与所选择的从机通信,须保证串口有识别功能。 SCON中的SM2位就是为满足这一条件设置的多机通信控制位。 其工作原理是在串行口以方式2(或方式3)接收时,若SM2=1, 则表示进行多机通信,可能以下两种情况: 1>
17 主从式是指多机系统中,只有一个主机,其余全是从机。主 机发送的信息可以被所有从机接收,任何一个从机发送的信息, 只能由主机接收。从机和从机之间不能进行直接通信,只能经 主机才能实现。 多机通信的工作原理: 要保证主机与所选择的从机通信,须保证串口有识别功能。 SCON中的SM2位就是为满足这一条件设置的多机通信控制位。 其工作原理是在串行口以方式2(或方式3)接收时,若SM2=1, 则表示进行多机通信,可能以下两种情况: 17
(1)从机接收到的主机发来的第9位数据RB8=1时,前8位数 据才装入SBUF,并置中断标志RI=1,向CPU发出中断请 求。 在中断服务程序中,从机把接收到的SBUF中的数据存入数据 缓冲区中。 (2)如果从机接收到的第9位数据RB8=0时,则不产生中断标 志R=1,不引起中断,从机不接收主机发来的数据。 若SM2=0,则接收的第9位数据不论是0还是1,从机都将产 生RI=1中断标志,接收到的数据装入SBUF中。 18
18 (1)从机接收到的主机发来的第9位数据RB8=1时,前8位数 据才装入SBUF,并置中断标志RI = 1,向CPU发出中断请 求。 在中断服务程序中,从机把接收到的SBUF中的数据存入数据 缓冲区中。 (2)如果从机接收到的第9位数据RB8=0时,则不产生中断标 志RI=1,不引起中断,从机不接收主机发来的数据。 若SM2 = 0,则接收的第9位数据不论是0还是1,从机都将产 生RI = 1中断标志,接收到的数据装入SBUF中
应用这一特性,可实现AT89S52单片机的多机通信。多机 通信的工作过程: (1)各从机初始化程序允许从机的串行口中断,将串行口 编程为方式2或方式3接收,即9位异步通信方式,且SM2和 REN位置“1”,使从机处于多机通信且只接收地址帧的状态。 (2)在主机和某个从机通信之前,先将从机地址(即准备 接收数据的从机)发送给各个从机,接着才传送数据(或命 令),主机发出的地址帧信息的第9位为1,数据(或命令)帧 的第9位为0。当主机向各从机发送地址帧时,各从机的串行口 接收到的第9位信息RB8为1,且由于各从机的SM2=1, 19
19 应用这一特性,可实现AT89S52单片机的多机通信。多机 通信的工作过程: (1)各从机初始化程序允许从机的串行口中断,将串行口 编程为方式2或方式3接收,即9位异步通信方式,且SM2和 REN位置“1”,使从机处于多机通信且只接收地址帧的状态。 (2)在主机和某个从机通信之前,先将从机地址(即准备 接收数据的从机)发送给各个从机,接着才传送数据(或命 令),主机发出的地址帧信息的第9位为1,数据(或命令)帧 的第9位为0。当主机向各从机发送地址帧时,各从机的串行口 接收到的第9位信息RB8为1,且由于各从机的SM2=1, 19
则RI置“1”,各从机响应中断,在中断服务子程序中,判 断主机送来的地址是否和本机地址相符合,若为本机地址, 则该从机SM2位清“0”,准备接收主机的数据或命令;若地 址不相符,则保持SM2=1。 (3)接着主机发送数据(或命令)帧,数据帧的第9位为0。 此时各从机接收到的RB8=O。 只有与前面地址相符合的从机(即SM2位已清“0”的从机) 才能激活中断标志位RI,从而进入中断服务程序,接收主机 发来的数据(或命令);与主机发来的地址不相符的从机, 由于SM2保持为1,又RB8=0,因此不能激活中断标志RI,就 不能接受主机发来的数据帧。 20
20 则RI置“1”,各从机响应中断,在中断服务子程序中,判 断主机送来的地址是否和本机地址相符合,若为本机地址, 则该从机SM2位清“0”,准备接收主机的数据或命令;若地 址不相符,则保持SM2=1。 (3)接着主机发送数据(或命令)帧,数据帧的第9位为0。 此时各从机接收到的RB8 = 0。 只有与前面地址相符合的从机(即SM2位已清“0”的从机) 才能激活中断标志位RI,从而进入中断服务程序,接收主机 发来的数据(或命令);与主机发来的地址不相符的从机, 由于SM2保持为1,又RB8=0,因此不能激活中断标志RI,就 不能接受主机发来的数据帧。 20