主机通信子程序如下

主机通信子程序如下

ID:15009470

大小:66.50 KB

页数:8页

时间:2018-07-31

主机通信子程序如下_第1页
主机通信子程序如下_第2页
主机通信子程序如下_第3页
主机通信子程序如下_第4页
主机通信子程序如下_第5页
资源描述:

《主机通信子程序如下》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、主机通信子程序如下:MOVTMOD,#20HMOVTL1,#0F3HMOVTH1,#0F3HSETBTR1MOVPCON,#80HSTAT:MOVSCON,#0D8H;串口方式3,允许接收,TB8=1CLRES;禁止串行中断CLP1:MOVSBUF,#0FFH;发送命令,所有从机SM2=1JNBTI,$;等待发送完毕CLRTI;清发送中断标志MOVA,R2;取寻址的从机地址MOVSBUF,A;发送寻址的从机地址JNBTI,$;等待发送完毕CLRTIJNBRI,$;等待寻址的从机应答(返回地址)CLRR

2、IMOVA,SBUF;读从机应答信号XRLA,R2;核对地址(异或,相同为0)JNZCLP1;若地址不符合,则重发CLP2:CLRTB8;准备发送数据帧(只有寻址的从机才能接收)MOVSBUF,R3;发送命令帧JNBTI,$;等待发送完毕CLRTIJNBRI,$;等待从机应答CLRRIMOVA,SBUF;读应答信息JBAcc.7,CLP2;若是非法命令则重发(ERR=1)CJNER3,#01H,SRX0;若原命令不要求从机发送,则转STX:JNBAcc.1,CLP2;R3=01H要求从机发送,发送未准

3、备好,则重新联络STX1:JNBRI,$;从机发送数据块长度,主机等待接收完毕CLRRIMOVA,SBUF;主机接收数据块长度MOVR5,A;保存数据块长度MOVR7,A;暂存数据块长度RX_DATA:JNBRI,$;接收从机发来的数据CLRRIMOVA,SBUFMOV@R1,A;存放数据并计算校验和ADDA,R6MOVR6,A;存放校验和INCR1;指向下一数据存储单元DJNZR5,STX1;判全部数据接收完毕否?未完继续JNBRI,$;接收主机发来的数据校验和CLRRIMOVA,SBUFCJNEA

4、,R6,ERROR;校验和不正确,则发81H表明数据出错RET;正确接收完毕,返回ERROR:MOVSBUF,#81HJNBTI,$CLRTIMOVA,R7;恢复R5(收到该数据块的长度)以便恢复R1值MOVR5,ALOOP:DECR1;恢复R1首地址DJNZR5,LOOPMOVR6,00H;恢复累加和AJMPSTX1;重新等待接收SRX0:JCSRX;若原命令要求从机接收,转从机接收RET;否则返回SRX:JNBAcc.0,CLP2;从机接收未准备好,重新联络SRX1:MOVA,R4;从机接收已准备

5、好则主机发送数据块长度MOVSBUF,AWAIT1:JBCTI,SRX1;等待主机发送完毕SJMPWAIT1TX_DATA:MOVA,@R0;主机发送数据,并计算校验和MOVSBUF,AJNBTI,$CLRTIADDA,R6MOVR6,AINCR0;指向下一发送数据DJNZR4,TX_DATA;判全部数据发送完毕否?未完继续MOVA,R6;主机发送校验和MOVSBUF,AJNBTI,$CLRTIJNBRI,$;等待从机应答CLRRIMOVA,SBUF;接受应答信CLRCySUBBA,#81HJZRE_

6、SEND;收到应答是81H则重新发送数据RET;全部数据发送成功,则返回RE_SEND:MOVA,R7;恢复该数据块长度MOVR4,ALOOP:DECR0;回到该数据块首地址DJNZR4,LOOPMOVR6,#00H;清校验和有关从机中断、T1、波特率和串行口的初始化,可按如下预先完成:ORG0023HLJMPSERVEORG0050H;串行中断服务程序入口MOVTMOD,#20H;定时器T1初始化工作于方式2MOVTL1,0F3HMOVTH1,0F3HSETBTR1MOVPCON,#80H;SMOD

7、=1波特率倍增MOVSCON,#0F0H;串行方式3,允许接收,SM2=1同时,可用伪指令定义本从机地址:SLAVEQUR2,PSW.5为从机发送准备就绪状态标志(PSW.5=1,发送准备就绪),PSW.1为从机接收准备就绪状态标志(PSW.1=1接收准备就绪)。可以在主程序中对PSW.1和PSW.5置位。通信中断服务子程序如下:SERVE:CLRRI;清接收标志位PUSHAcc;保护现场PUSHPSWSETBRS0;选择寄存器工作区CLRRS1MOVA,SBUF;接收主机发送来的地址XRLA,#SL

8、AV;比较与本从机地址相符否JZSS1;相同,则转接收以下的数据SRET:POPPSW;不相符,则恢复现场,中断返回POPAccRETISS1:CLRSM2;准备接收数据MOVSBUF,#SLAV;发回本机地址回复主机JNBTI,$;等待发送完毕CLRTIJNBRI,$;等待主机应答CLRRIJNBRB8,SS2;若受到RB8=0则从机转接收命令帧SETBSM2;否则置位SM2并返回等待主机重新联络SJMPSRETSS2:MOVA,SBUFCJNEA,#

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

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

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