您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制基于AT89S51的多机通信 正文
基于AT89S51的多机通信

基于AT89S51的多机通信

点击数:7941 次   录入时间:03-04 11:56:05   整理:http://www.55dianzi.com   电脑-单片机-自动控制
  多个AT89S51单片机可利用串行口进行多机通信,经常采用的是如下图所示的主从式结构。该多机系统中有1个主机(AT89S51单片机或其他具有串行接口的微计算机)和3个(也可以为多个)AT89S51单片机组成的从机系统,如下图所示。主机的RXD与所有从机的TXD端相连,TXD与所有从机的RXD端相连。从机的地址分别为01H、02H和03H。
  1
  所谓主从式是指在多个单片机组成的系统中,只有一个主机,其余全是从机。主机发送的信息可以被所有从机接收,任何一个从机发送的信息只能由主机接收。从机和从机之间不能进行相互的直接通信,从机和从机之间的通信只能经主机才能实现。
  
  下面介绍多机通信的工作原理。
  
  要保证主机与所选择的从机实现可靠通信,必须保证串行口具有识别功能。串行口控制寄存器SCON中的SM2位就是为满足这一条件而设置的多机通信控制位。其工作原理是在串行口以方式2(或方式3)接收时,若SM2=1,则表示进行多机通信,这时可能出现以下两种情况:
  
  (1)从机接收主机发来的第9位数据RB8=1时,前8位数据才装入SBUF,并置中断标志RI=1,向CPU发出中断请求。在中断服务程序中,从机把接收的SBUF中的数据存人数据缓冲区中。
  
  (2)如果从机接收主机发来的第9位数据RB8=O时,则不产生中断标志RI=1,不引起中断,从机不接收主机发来的数据。
  
  若SM2=0,则接收的第9位数据不论是O还是1,从机都将产生RI=1中断标志,接收的数据装入SBUF中。
  
  应用AT89S51单片机串行口的这一特性,可实现AT89S51单片机的多机通信。多机通信的工作过程如下:
  
  (1)各从机初始化程序允许从机的串行口中断,将串行口编程为方式2或方式3接收,即9位异步通信方式,且SM2和REN位置l,使从机只处于多机通信且接收地址帧的状态。
  
  (2)在主机和某个从机通信之前,先将从机地址(即准备接收数据的从机)发送给各个从机,接着才传送数据(或命令),主机发出的地址帧信息的第9位为1,数据(或命令)帧的第9位为0。当主机向各从机发送地址帧时,各从机的串行口接收到的第9位信息RB8为1,且由于各从机的SM2=1,则中断标志位RI置1,各从机响应中断。在中断服务子程序中,各从机判断主机送来的地址是否和本机地址相符合,若为本机地址,则该从机SM2位清0,准备接收主机的数据或命令;若地址不相符,则保持SM2=1状态。
  
  (3)接着主机发送数据(或命令)帧,数据帧的第9位为0。此时各从机接收的RB8=0,只有与前面地址相符合的从机系统(即SM2位已清0的从机)才能激活中断标志位RI,从而进入中断服务程序,在中断服务程序中接收主机发来的数据(或命令);与主机发来的地址不相符的从机,由于SM2保持为1,又RB8=0,因此不能激活中断标志RI,也就不能接收主机发来的数据帧,从而保证了主机与从机间通信的正确性。此时主机与建立联系的从机已经设置为单机通信模式,即在整个通信中,通信的双方都要保持发送数据的第9位(即TB8位)为0,防止其他的从机误接收数据。
  
  (4)结束数据通信并为下一次的多机通信做好准备。在多机通信系统中每个从机都被赋予唯一的一个地址。例如,图7-16中三个从机的地址可设为:OIH、02H、03H,还要预留1~2个“广播地址”,它是所有从机共有的地址,例如将“广播地址”设为OOH。当主机与从机的数据通信结束后,一定要将从机再设置为多机通信模式,以便进行下一次的多机通信。这时要求与主机正在进行数据传输的从机必须随时注意,一旦接收的数据第9位(RB8)为l,说明主机传送的不再是数据,而是地址,这个地址就有可能是“广播地址”。当收到“广播地址”后,便将从机的通信模式再设置成多机模式,为下一次的多机通信做好准备。


本文关键字:通信  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制