MCS51系列单片机双机并行互连的实现方法
(5)数据接收完成返回。
2.3 从机工作流程
在主从并行通信接口工作方式下,无论从机是接收数据还是发送数据,都是在中断(也可以是查询方式)方式下进行的,从机的工作流程如下:
(1)进入中断服务程序;
(2)检查数据传送的方向;
(3)如果DIR为0,则等待CHK信号有效,再从8位端读取数据,读完后设定ACK信号有效;
(4)如果DIR为1,从机将数据送到8位端上,再设定ACK为有效,并等待主机取走数据(即CHK信号有效);
(5)退出中断服务程序。
3 无主从双向并行通信接口的实现
无主从双向并行通信接口的特点是两个单片机处在平等的地位,两个单片机均可随时提出申请,向对方发送数据,当然也可通过简单的接口协议从对方读取数据。这种情况下,就有可能出现两个单片机同时提出使用8位端口的申请而发生冲突,从而影响双方数据的传送。要解决这个问题,就要求每一方必须在数据传送之前进行检查,以判断8位端口是否被对方所使用,从而避免冲突的发生。图3是无从双向并行通信接口的原理图。该接口中采用了5根控制信号线,其中CHK/ACK控制信号线,其中CHK/ACK控制信号线的功能可以复用。8位端口可以是P0、P1或其它8位I/O口。
在无主从双向并行通信接口中,由于单片机A与单片机B没有主从关系而处在平等位置,所以单片机B与单片机A的数据接收发送流程完全相同。这里只说明单片机A的数据接收发送流程。
3.1 数据发送流程
下面给出单片机A的数据发送流程:
(1)检查CHKREQ,判断单片机B是否提出了数据传送申请;
(2)如果单片机B提出了申请,则转a继续等待;否则,单片机A提出申请,将REQ置为有效;
(3)再次检查CHKREQ,判断单片机B是否同时提出了申请;
(4)如果单片机B提出了申请,则发生冲突;清除REQ并延时;然后执行(1);
(5)将数据送8位端口,设定STB有效;
(6)检查CHK,等待单片机B将数据取走;
(7)检查单片机A的数据是否全部送完,如没有则转执行(5);
(8)撤销REQ信号,释放8位端口;
(9)数据发送完成,退出流程。
3.2 数据接收流程
单片机A的数据接收流程如下:
(1)进入中断服务流程;
(2)从8位端口读取数据;
(3)设置ACK信号有效,表示数据已成功读取;
《MCS51系列单片机双机并行互连的实现方法(第2页)》