多机通信举例.doc

多机通信举例.doc

ID:50388322

大小:36.50 KB

页数:6页

时间:2020-03-08

多机通信举例.doc_第1页
多机通信举例.doc_第2页
多机通信举例.doc_第3页
多机通信举例.doc_第4页
多机通信举例.doc_第5页
资源描述:

《多机通信举例.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、多机通信举例:例8—4现有1台主机与10台从机进行双向通信。从机地址为:00H——09H。设主、从机以方式3进行串行通信,波特率为1200,F晶振为6MHZ。下面以主机发送数据,从机接收数据为例说明。主机设定有关寄存器的内容如下:R1——存放主机发送的数据块首地址R2——存放寻址的从机地址R3——存放主机发送数据块的长度通信命令约定:“01H”:表示主机发送数据,从机接收数据;“02H”:表示主机接收数据,从机发送数据。主机通信程序流程图如图8—8所示:开始定时器T1初始化串行口初始化向从机发送地址接收从机返

2、回的地址发送无效地址FFH从机地址相符?NY向从机发送命令延时发送数据块结束图8—8主机通信程序流程图187/6由图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,$;等

3、待从机应答。CLRRI;接收到从机应答,RI清零。MOVA,SBUF;取出从机应答数据(从机地址)。XRLA,R2;核对应答地址。JZMSEND;若地址相符转发送命令。SETBTB8;地址不相符,置地址标志,以便重发地址。CLRTIMOVSBUF,#0FFH;发送无效地址,使所有从机SM2置1。SJMPSADDR;重发地址。MSEND:CLRTB8;地址相符,准备发送命令、数据等。MOVSBUF,#01H;发送命令,要求从机接收数据。LCALLDELAY10;延迟10MS。MAGAIN:MOVSBUF,@R1

4、    ;主机发送数据。JNBTI,$;等待一个字符发送完。CLRTI;本字符发送完毕,准备发送下一个字符。INCR1        ;发送数据区地址指针加一,指向下一单元。DJNZR3,MAGAIN   ;数据快未发送完,继续发送。RET;发送完毕,返回。以#08H号从机接收为例,设定:R1:存放从机接收数据块首地址;R2:存放从机接收数据块长度。187/6从机通信程序流程图如图8—9所示:定时器T1初始化串行口初始化接收数据块开始接收主机发送的地址本机SM2位清零接收主机命令命令识别主机发送,从机接收?主

5、机接收,从机发送?发送数据块(略)结束是本机地址?本机SM2置1NYNYNY图8—9从机通信程序流程图由图8—9可得从机通信程序清单如下:187/6MOVTMOD,#20H;T1设置工作方式2。MOVTL1,#0F3H;置初值。MOVTH1,#0F3HSETBTR1;启动T1。MOVPCON,#00H;波特率不倍增。MOVSCON,#0F0H;本机串行口设置工作方式3,SM2置1,准备接收地址信息。WAIT:JNBRI,$;等待主机联络。CLRRI;接收到主机地址信息,清RI,准备接收下一数据。MOVA,SB

6、UF;取出接收到的地址信息。XRLA,#08H;与本机比较。JZSADDR;是本机地址,转发送本机地址程序。SETBSM2;本机SM2置1,以便重新接收地址。AJMPWAIT;不是本机地址,再重新联络。SADDR:MOVSBUF,#08H;发送本地址,供主机核对。CLRTICLRSM2;准备接收命令。JNBRI,$;接收主机发送的命令。CLRRIMOV70H,SBUFMOVA,70H;取出命令。XRLA,#01H;检查命令。JZRECIV;若为本机接收数据命令,转接收程序。XRLA,#02H;再次检查命令。J

7、ZSEND;若为本机发送数据命令,转发送程序。AJMPWAIT;命令无效,返回待命状态。RECIV:JNBRI,$;接收一个字符。CLRRI;准备下次接收。MOV@R1,SBUF;存接收数据。INCR1;修改接收数据区指针。DJNZR2,RECIV;若数据接收未完,继续接收。SETBSM2;数据接收完毕,SM2重新置1。LJMPWAIT;返回待命状态。SEND:(略)187/6应当指出,以上介绍了多机通信的一个简单示例,实际应用时还应考虑命令校核、数据校核等问题,以求提高通信的可靠性。同时波特率的设定还要考虑

8、所选择的通信介质等,篇幅有限,不再细述。187/6思考题与习题8—1什么是串行通信的波特率?8—2若8051单片机F晶振=11.059MHZ,需用波特率2400,试计算定时器T1的记数初值。8—3MCS—51单片机的串行口四种工作方式各有哪些特点?8—4MCS—51单片机串行口四种工作方式的波特率如何确定?8—5试用8051串行口工作方式0与移位寄存器组成6位LED静态电路,并编程输出字符”89C5

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。