您的位置:网站首页 > 电器维修资料网 > 正文 >
基于AT89S51的多机通信
★★★★★【文章导读】:基于AT89S51的多机通信具体内容是:多个at89s51单片机可利用串行口进行多机通信,经常采用的是如下图所示的主从式结构。该多机系统中有1个主机(at89s51单片机或其他具有串行接口的微计算机)和3个(也可以为多个)at89s51单片机组成的从机系统,如下图…
来源: 日期:2013-12-18 14:01:01 人气:标签:
多个at89s51单片机可利用串行口进行多机通信,经常采用的是如下图所示的主从式结构。该多机系统中有1个主机(at89s51单片机或其他具有串行接口的微计算机)和3个(也可以为多个)at89s51单片机组成的从机系统,如下图所示。主机的rxd与所有从机的txd端相连,txd与所有从机的rxd端相连。从机的地址分别为01h、02h和03h。
所谓主从式是指在多个单片机组成的系统中,只有一个主机,其余全是从机。主机发送的信息可以被所有从机接收,任何一个从机发送的信息只能由主机接收。从机和从机之间不能进行相互的直接通信,从机和从机之间的通信只能经主机才能实现。
下面介绍多机通信的工作原理。
要保证主机与所选择的从机实现可靠通信,必须保证串行口具有识别功能。串行口控制寄存器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,说明主机传送的不再是数据,而是地址,这个地址就有可能是“广播地址”。当收到“广播地址”后,便将从机的通信模式再设置成多机模式,为下一次的多机通信做好准备。
【看看这篇文章在百度的收录情况】
相关文章
- 上一篇: ARM寄存器基本概念
- 下一篇: 基于AT89S51的波特率制定方法