首页 理论教育 单片机串行接口的多机通信-《单片机原理与应用实例》推荐

单片机串行接口的多机通信-《单片机原理与应用实例》推荐

时间:2023-10-22 理论教育 版权反馈
【摘要】:MCS-51系列单片机具有多机通信功能,利用它可构成各种分布式系统。根据MCS-51多机通信原理,多机通信过程安排如下:1)使所有从机的SM2位置1,处于只接收地址帧的状态。这里,为了介绍MCS-51多机通信程序设计的基本原理,仅规定几条最基本的条款。1)主机串行通信子程序:图7-50为中断方式多机通信主机程序流程图。本程序实例中用F0作发送准备就绪标志,PSW.1作接收准备就绪标志。

单片机串行接口的多机通信-《单片机原理与应用实例》推荐

MCS-51系列单片机具有多机通信功能,利用它可构成各种分布式系统。

1.多机通信原理

8051的多机分布式系统如图7-47所示,这是全双工通信方式,主机与各从机可实现全双工通信,而各从机之间只能通过主机交换信息。

多机通信中,要保证主机与所选择的从机实现可靠通信,必须保证通信接口具有识别功能。而MCS-51系列单片机串行接口控制寄存器中的SM2就是满足这一要求而设置的多机控制位,其多机控制原理如下:

在串行接口以方式2(或方式3)接收时,若SM2=1,表示置多机通信功能位,这时出现两种可能情况:接收到第9位数据为1时,数据才装入SBUF,并置RI=1向CPU发出中断请求;如果接收到第9位数据为0,则不产生中断标志,信息将抛弃。若SM2=0,则接收到的第9位数据不论是0还是1都产生RI=1中断标志,接收到的数据装入SBUF中。根据这个功能,可实现多个MCS-51系列单片机应用系统的串行通信。

978-7-111-46831-8-Chapter07-136.jpg

图7-47 8051多机分布式系统

2.多机通信的程序设计

(1)多机通信控制过程 设有一个多机分布式系统,其中有一个8031系统为主机,n个8031应用系统从机。不考虑接口驱动时,系统如图7-47所示,主机的RXD端与所有从机的TXD端相连,TXD端与所有从机的RXD端相连。

根据MCS-51多机通信原理,多机通信过程安排如下:

1)使所有从机的SM2位置1,处于只接收地址帧的状态。

2)主机发送一帧地址信息,其中包含8位地址,第9位为地址、数据标志位,第9位置1表示发送的是地址。

3)从机接收到地址帧后,各自将所接收的地址与本从机的地址相比较。对于地址相符的从机,使SM2清0以接收主机随后发来的所有信息;对于地址不相符合的从机,仍保持SM2=1状态,对主机随后发送的数据不予理睬,直至发送新的地址帧。

4)主机发送控制指令与数据,给被寻址的从机数据帧的第9位置0,表示发送的是数据或控制指令。

(2)通信协议的约定 要保证通信的可靠和有条不紊,相互通信时,必须有严格的通信协议。一般通信协议都有通用标准,协议较完善,但很复杂。这里,为了介绍MCS-51多机通信程序设计的基本原理,仅规定几条最基本的条款。

1)系统中从机容量为255台,其地址为00H~FEH。

2)地址FFH是对所有从机都起作用的控制命令,命令各从机恢复SM2=1的状态。

3)制定主机发送的控制命令代码,代码按00H、01H、02H、…顺序设置,其他均为为非法代码。

4)数据块长度:16个字节。

5)设置从机状态字,以表明从机的工作状态。本例中,从机状态字格式如下:

978-7-111-46831-8-Chapter07-137.jpg

其中:ERR=1,从机接收到非法命令;

TRDY=1,从机发送准备就绪;

RRDY=1,从机接收准备就绪。

3.查询方式的多机通信实例

本例中主机命令编码为:

00H——复位命令;

01H——状态咨询命令;

02H——要求从机接收主机的数据命令;

O3H——要求从机向主机发送数据命令;

其他——非法命令。

每一次传送的数据块长度为16个字节。

(1)主机通信程序 工作寄存器设定为

(R0)——从机发送数据块首址;

(R7)——从机发送数据块长度;

(R2)——从机地址。

查询方式多机通信主机程序流程如图7-48所示。

主机程序清单:

978-7-111-46831-8-Chapter07-138.jpg

978-7-111-46831-8-Chapter07-139.jpg

978-7-111-46831-8-Chapter07-140.jpg

图7-48 查询方式多机通信主机程序流程图

978-7-111-46831-8-Chapter07-141.jpg

(2)从机通信程序(以2号从机为例) T作寄存器设定为:(www.xing528.com)

(RO)-发送数据块首地址:

(R7)-发送数据块长度。

如图7-49所示为查询方式多机通信2号从机程序流程图。

978-7-111-46831-8-Chapter07-142.jpg

978-7-111-46831-8-Chapter07-143.jpg

图7-49 查询方式多机通信2号从机程序流程图

978-7-111-46831-8-Chapter07-144.jpg

978-7-111-46831-8-Chapter07-145.jpg

4.中断方式的多机通信实例

本例中主机命令编码为:00H——要求从机接收数据块;01H——要求从机发送数据块;其他——非法命令。每一次传送的数据块长度为16个字节。

下面给出中断方式的多机通信实例,其主机通信程序部分以子程序方式给出,要进行串行通信时,可直接调用;从机部分以串行接口中断服务方式给出,其中断入口地址为0023H。若从机未作好接收或发送准备,就从中断程序返回,在主程序中做好准备。因此主机此时不能简单地等待从机准备就绪,而应重新和从机联络,使从机再次进入串行接口中断。系统可采用定时器1作波特率发生器,也可采用固定波特率。主机和从机的定时器初始化程序从略。

1)主机串行通信子程序:图7-50为中断方式多机通信主机程序流程图。工作寄存器设定为:

(R2)——被寻址从机地址;

(R3)——主机命令;

(R4)——数据块长度;

(R0)——主机发送数据块首址;

(R1)——主机接收的数据块首址。

程序清单:

978-7-111-46831-8-Chapter07-146.jpg

978-7-111-46831-8-Chapter07-147.jpg

978-7-111-46831-8-Chapter07-148.jpg

图7-50 中断方式多机通信主机程序流程图

978-7-111-46831-8-Chapter07-149.jpg

若主机向10号从机发送数据块,数据块放置在片内RAM区的40H~5FH单元中(数据块长度为32个字节),则调用上述通信子程序的主程序中应有下列的初始化指令段:

MOV R2,#0AH

MOV R3,#01H

MOV R4,#20H

MOV R0,#40H

LCALL MSIO

从机的串行通信采用中断控制启动方式。在串行通信启动后仍采用查询方式来接收或发送数据块。从机的主程序中应包括定时器1波特率设定及初始化、开中断等程序段。初始化包括工作寄存器赋值、状态标志设置等。本程序实例中用F0作发送准备就绪标志,PSW.1作接收准备就绪标志。

若从机接收数据块长度为16个字节,接收后送入片内RAM区的首址为40H单元,发送数据放置在片内RAM区的首地址为50H单元。因此其从机主程序中有关部分指令如下(中断服务程序选用工作寄存器为Ⅱ区):

MOV SP,#1FH;设栈指针

MOV SCON,#0F0H;置串行接口方式3,SM2=1,允许接收

MOV 08H#40H;接收数据缓冲区首址→R0

MOV 09H#50H;发送缓冲区首址→R1

MOV 0AH#10H;发送或接收字节数→R2

2)串行接口中断服务程序:图7-51所示为中断方式多机通信从机中断服务程序流程图。

中断服务程序清单(由0023H转来):

978-7-111-46831-8-Chapter07-150.jpg

978-7-111-46831-8-Chapter07-151.jpg

978-7-111-46831-8-Chapter07-152.jpg

图7-51 中断方式多机通信从机中断服务程序流程图

978-7-111-46831-8-Chapter07-153.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈