- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编程实现多机通信的过程(续): 各从机接收到地址信息,因为RB8=1,则置中断标志RI。中断后,首先判断主机送过来的地址信息与自己的地址是否相符。对于地址相符的从机,置SM2=0,以接收主机随后发来的所有信息。对于地址不相符的从机,保持SM2=1的状态,对主机随后发来的信息不理睬,直到发送新的一帧地址信息。 主机发送控制指令和数据信息给被寻址的从机。其中主机置TB8为0,表示发送的是数据或控制指令。对于没选中的从机,因为SM2=1,RB8=0,所以不会产生中断,对主机发送的信息不接收。 主从式多机通信亦存在通信协议问题。一般通信协议都有通用标准,协议较完善,但很复杂。这里仅规定几条基本的协议: 80C51单片机构成的多机通信系统最多允许255台从机(因为主机通常把从机地址作为8位数据发送),其地址分别为00H-FEH。 “地址”FFH是对所有从机都起作用的一条控制命令,该命令使被寻址从机恢复SM2 =1的状态。 主机首先发送地址帧,被寻址的从机返回本机地址给主机,再判断地址相符后主机给被寻址从机发送控制命令,被寻址从机根据其命令向主机回送自己的状态,若主机判断状态正常,主机开始发送或接收的第一个字节是数据块的长度。 D7 D6 D5 D4 D3 D2 D1 D0 ERR 0 0 0 0 0 TRDY RRDY 假定主机发送的控制命令代码为: 00H:主机发送、从机接收; 01H:从机发送、主机接收; 其它:非法命令。 从机状态字格式为: 其中: ERR=1,从机接收到非法命令; TRDY=1,从机发送准备就绪; RRDY=1,从机接收准备就绪。 主机程序 主机程序,由主机主程序和主机通信子程序组成; 主机主程序用于定时器T1初始化,串行口初始化和传递主机通信子程序所需入口参数; 主机通信子程序用于主机和从机间一个数据块的传送 程序流程图如图6.14所示。 通信程序包括主机程序和从机程序两部分。 图6.14 主程序流程图 程序中所用寄存器分配如下: R0:存放主机发送数据块起始地址; R1:存放主机接收数据块起始地址; R2:存放被寻址从机地址; R3:存放主机发出命令; R4:存放发送数据块长度; R5:存放接收数据块长度。 START:MOV TMOD,#20H ;定时器T1方式2 MOV TH1,#0F4H ;定时器T1初值 MOV TL1,#0F4H ;波特率为1200bps SETB TR1 ;启动T1工作 MOV SCON,#0D8H ;串行口方式3,允许接收, ;SM2=0, TB8=1 MOV PCON,00H MOV R0,#40H ;发送数据块首址送R0 MOV R1,#20H ;接收数据块首址送R1 MOV R2,#SLAVE ;被寻址从机地址送R2 MOV R3,#00H ;主机发从机收命令 MOV R4,#20 ;发送数据块长度送R4 MOV R5,#20 ;接收数据块长度送R5 ACALL COMMUT ;调用主机通信子程序 …… SJMP $ ;停机 主机参考主程序: 从机程序 从机程序有从机主程序和从机中断服务程序组成。从机主程序用于定时器T1初始化、串行口初始化和中断初始化。从机中断服务程序用于对主机的通信。 从机主程序流程图如图6.14(a)所示 图6.14 从机主程序流程图 从机中断服务程序: 由于从机串行口设定为方式3、SM2 = 1和RI = 0,且串行口中断已经开放,因此从机的接收中断总能被响应(主机发送地址时)。 在中断服务程序中,SLAVE是从机的本机地址,F0(即PSW.5)为本机发送就绪位地址(即:PSW.5 = 1表示从机发送准备就绪),F1为本机接收就绪状态位(即:PSW.1 = 1为本机已准备好接收)。 从机中断服务程序流程如图6.14(b)所示。 寄存器分配为: R0:存放发送数据块始址 R1:存放接收数据块始址 R2:存放发送数据块长度 R3:存放接收数据块长度 多机通信之例 在主/从式多机通信中,主机发送的信息可以被各个从机接收,而各从机发送的信息只能由主机接收,从机和从机之间不能直接通信。 多机通信的实现,主要靠主、从机之间正确地设置与判断多机通信控制位 SM2和发送或接收的第 9 数据位 TB8 ( RB8)。 程序1 :主机给 02H 号从机发送 50H~5FH 单元内的数据。 程序1 :主机给 02H 号从机发送 50H~5FH 单元内的数据。 主机给 02H 号从机发送 数据源程序(续) 程序2 : 02H 号从机响应主机呼叫的联络程序 程序2 : 02H 号从机响应主机呼叫的联络程序 (4)P
文档评论(0)