下载此文档

多机通信举例模板.doc


文档分类:通信/电子 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
多机通信举例多机通信举例:例8—4现有1台主机与10台从机进行双向通信。从机地址为:00H——09H。设主、从机以方式3进行串行通信,波特率为1200,F晶振为6MHZ。下面以主机发送数据,从机接收数据为例说明。主机设定有关寄存器的内容如下:R1——存放主机发送的数据块首地址R2——存放寻址的从机地址R3——存放主机发送数据块的长度通信命令约定:“01H”:表示主机发送数据,从机接收数据;“02H”:表示主机接收数据,从机发送数据。主机通信程序流程图如图8—8所示:开始定时器T1初始化串行口初始化向从机发送地址接收从机返回的地址发送无效地址FFH从机地址相符?NY向从机发送命令延时发送数据块结束图8—8主机通信程序流程图由图8—8流程图可得主机通信程序清单如下:MAIN:MOVTMOD,#20H;定时器T1设置工作方式2。MOVTL1,#0F3H;T1置初值。MOVTH1,#0F3HSETBTR1;启动T1。MOVPCON,#00H;波特率不倍增。MOVSCON,#0D8H;串行口设置工作方式3,TB8置1,表示发送地址。SADDR:MOVA,R2;取出从机地址。MOVSBUF,A;发送从机地址。JNBRI,$;等待从机应答。CLRRI;接收到从机应答,RI清零。MOVA,SBUF;取出从机应答数据(从机地址)。XRLA,R2;核对应答地址。JZMSEND;若地址相符转发送命令。SETBTB8;地址不相符,置地址标志,以便重发地址。CLRTIMOVSBUF,#0FFH;发送无效地址,使所有从机SM2置1。SJMPSADDR;重发地址。MSEND:CLRTB8;地址相符,准备发送命令、数据等。MOVSBUF,#01H;发送命令,要求从机接收数据。LCALLDELAY10;延迟10MS。MAGAIN:MOVSBUF,***@R1 ;主机发送数据。JNBTI,$;等待一个字符发送完。CLRTI;本字符发送完毕,准备发送下一个字符。INCR1 ;发送数据区地址指针加一,指向下一单元。DJNZR3,MAGAIN ;数据快未发送完,继续发送。RET;发送完毕,返回。以#08H号从机接收为例,设定:R1:存放从机接收数据块首地址;R2:存放从机接收数据块长度。从机通信程序流程图如图8—9所示:定时器T1初始化串行口初始化接收数据块开始接收主机发送的地址本机SM2位清零接收主机命令命令识别主机发送,从机接收?主机接收,从机发送?发送数据块(略)结束是本机地址?本机SM2置1NYNYNY图8—9从机通信程序流程图由图8—9可得从机通信程序清单如下:MOVTMOD,#20H;T1设置工作方式2。MOVTL1,#0F3H;置初值。MOVTH1,#0F3HSETBTR1;启动T1。MOVPCON,#00H;波特率不倍增。MOVSCON,#0F0H;本机串行口设置工作方式3,SM2置1,准备接收地址信息。WAIT:JNBRI,$;等待主机联络。CLRRI;接收到主机地址信息,清RI,准备接收下一数据。MOVA,SBUF;取出接收到的地址信息。XRLA,#08H;与本机比较。JZSADDR;是本机地址,转发送本机地址程序。SETBSM2;本机SM2置1,以便重新接收地址。AJMPWAIT;不是本机地址,再重新联络。SADDR:MOVSBUF,#08H;发送本地址,供主机核对。CLRTICLRSM2;准备接收命令。JNBRI,$;接收主机发送的命令。CLRRIMOV70H,SBUFMOVA,70H;取出命令。XRLA,#01H;检查命令。JZRECIV;若为本机接收数据命令,转接收程序。XRLA,#02H;再次检查命令。JZSEND;若为本机发送数据命令,转发送程序。AJMPWAIT;命令无效,返回待命状态。RECIV:JNBRI,$;接收一个字符。CLRRI;准备下次接收。******@R1,SBUF;存接收数据。

多机通信举例模板 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人读书百遍
  • 文件大小40 KB
  • 时间2019-12-07
最近更新