下面我们看看多机通信的工作过程 , 这个系统由一个主机和四个从机构成 。


    主机和从机之间可进行双向通信 , 从机和从机之间的通信必须通过主机 ,此时主机相当于一个数据收发机 , 关于从机与从机之前的通信 , 请参看本公司电子与计算机系统中的其它软件 , 下面我们只讲主机向从机发数据的情况 。

    先看硬件连接 , 主机的发送端 TXD 与四台从机的接收端相连 , 主机的接收端与四台从机的发送端相连 。

每台从机的名字都用一个 8 位二进制来代表 , 但要求所有从机的名字不能有重复 , 假定第一台从机就用“ 1 ”表示,即第一台从机的名字叫 1 ,第二台从机的名字叫 2 ,第三台从机的名字叫 3 ,第四台从机的名字叫 4 。

每一台从机都将自己的名字即从机号保存在程序存储器中 。

从机和主机都工作于方式 3 ,主机发送的数据中,

若第九位为 1 ,则该数据为地址,若第九位为 0 ,则该数据为数据 。

 

   单片机的串口通信过程和课堂上教师提问的过程差不多,教师提问前要先点某个学生的名字,然后所有的学生都把教师点的这个名字和他们自己的名字比较,其中必然有一个学生会发现这个名字是他的名字,然后他就从座位上站起来准备回答教师的提问 。而其它学生发现这个名字与他们无关,则他们都不用站起来。

   然后教师就开始提问,教师提问的时所有的学都听见了,站起的那个学生对这个问题作出响应,当教师 问一会儿后,他可能想换一个学生提问,这里他再点一个学生的名字,则这次被点的那个学生站起来,其它的学生全坐下。

 

    在单片机的多机通信中,同样如此,主机相当于教师,从机相当于学生,通信前,主机发送一个第九位为 1 的数据,相当于教师点一个学生的名字 。由于该数据的第九位为 1 ,所以不论从机的多机通信允许位 SM2 为 1 还是为 0 ,所有从机都接收并检测该数据,相当于所有学都听见了教师的点名,其中必然有一台从机会发现接收到的数据和它本身保存在存储器中的从机号相同,相当于其中有一个学生判断出教师要对他提问 。则该从机将其多机通信控制位 SM0 置 0 ,相当于这个学生从座位上站起来,这样才能接收主机将要发送给它的第九位为 0 的数据,

即相当于只有站起来的学生才能回答提问,而其它从机肯定会发现它们接收到的地址与它们的从机号不相符,则这些从机都将其多机通信控制位 SM2 置 1 ,相当于其它的学生全都坐下 。

   主机在发出一个从机的地址后,紧接着就可以把发往该从机的数据依次发出,每个数据的第九位都为 0 ,这相当于教师提问,每个从机都检测到了这些数据,但只有 SM2 为 0 的从机才能将这些数据装入接收缓冲器并申请 CPU 处理这些数据,而其它的从机将这些数据丢失,相当于只有站起来的学生才能回答提问。