主机通信子程序如下要点.docx
- 文档编号:4876411
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:8
- 大小:16.95KB
主机通信子程序如下要点.docx
《主机通信子程序如下要点.docx》由会员分享,可在线阅读,更多相关《主机通信子程序如下要点.docx(8页珍藏版)》请在冰豆网上搜索。
主机通信子程序如下要点
主机通信子程序如下:
MOVTMOD,#20H
MOVTL1,#0F3H
MOVTH1,#0F3H
SETBTR1
MOVPCON,#80H
STAT:
MOVSCON,#0D8H;串口方式3,允许接收,TB8=1
CLRES;禁止串行中断
CLP1:
MOVSBUF,#0FFH;发送命令,所有从机SM2=1
JNBTI,$;等待发送完毕
CLRTI;清发送中断标志
MOVA,R2;取寻址的从机地址
MOVSBUF,A;发送寻址的从机地址
JNBTI,$;等待发送完毕
CLRTI
JNBRI,$;等待寻址的从机应答(返回地址)
CLRRI
MOVA,SBUF;读从机应答信号
XRLA,R2;核对地址(异或,相同为0)
JNZCLP1;若地址不符合,则重发
CLP2:
CLRTB8;准备发送数据帧(只有寻址的从机才能接收)
MOVSBUF,R3;发送命令帧
JNBTI,$;等待发送完毕
CLRTI
JNBRI,$;等待从机应答
CLRRI
MOVA,SBUF;读应答信息
JBAcc.7,CLP2;若是非法命令则重发(ERR=1)
CJNER3,#01H,SRX0;若原命令不要求从机发送,则转
STX:
JNBAcc.1,CLP2;R3=01H要求从机发送,发送未准备好,则重新联络
STX1:
JNBRI,$;从机发送数据块长度,主机等待接收完毕
CLRRI
MOVA,SBUF;主机接收数据块长度
MOVR5,A;保存数据块长度
MOVR7,A;暂存数据块长度
RX_DATA:
JNBRI,$;接收从机发来的数据
CLRRI
MOVA,SBUF
MOV@R1,A;存放数据并计算校验和
ADDA,R6
MOVR6,A;存放校验和
INCR1;指向下一数据存储单元
DJNZR5,STX1;判全部数据接收完毕否?
未完继续
JNBRI,$;接收主机发来的数据校验和
CLRRI
MOVA,SBUF
CJNEA,R6,ERROR;校验和不正确,则发81H表明数据出错
RET;正确接收完毕,返回
ERROR:
MOVSBUF,#81H
JNBTI,$
CLRTI
MOVA,R7;恢复R5(收到该数据块的长度)以便恢复R1值
MOVR5,A
LOOP:
DECR1;恢复R1首地址
DJNZR5,LOOP
MOVR6,00H;恢复累加和
AJMPSTX1;重新等待接收
SRX0:
JCSRX;若原命令要求从机接收,转从机接收
RET;否则返回
SRX:
JNBAcc.0,CLP2;从机接收未准备好,重新联络
SRX1:
MOVA,R4;从机接收已准备好则主机发送数据块长度
MOVSBUF,A
WAIT1:
JBCTI,SRX1;等待主机发送完毕
SJMPWAIT1
TX_DATA:
MOVA,@R0;主机发送数据,并计算校验和
MOVSBUF,A
JNBTI,$
CLRTI
ADDA,R6
MOVR6,A
INCR0;指向下一发送数据
DJNZR4,TX_DATA;判全部数据发送完毕否?
未完继续
MOVA,R6;主机发送校验和
MOVSBUF,A
JNBTI,$
CLRTI
JNBRI,$;等待从机应答
CLRRI
MOVA,SBUF;接受应答信
CLRCy
SUBBA,#81H
JZRE_SEND;收到应答是81H则重新发送数据
RET;全部数据发送成功,则返回
RE_SEND:
MOVA,R7;恢复该数据块长度
MOVR4,A
LOOP:
DECR0;回到该数据块首地址
DJNZR4,LOOP
MOVR6,#00H;清校验和
有关从机中断、T1、波特率和串行口的初始化,可按如下预先完成:
ORG0023H
LJMPSERVE
ORG0050H;串行中断服务程序入口
MOVTMOD,#20H;定时器T1初始化工作于方式2
MOVTL1,0F3H
MOVTH1,0F3H
SETBTR1
MOVPCON,#80H;SMOD=1波特率倍增
MOVSCON,#0F0H;串行方式3,允许接收,SM2=1
同时,可用伪指令定义本从机地址:
SLAVEQUR2,PSW.5为从机发送准备就绪状态标志(PSW.5=1,发送准备就绪),PSW.1为从机接收准备就绪状态标志(PSW.1=1接收准备就绪)。
可以在主程序中对PSW.1和PSW.5置位。
通信中断服务子程序如下:
SERVE:
CLRRI;清接收标志位
PUSHAcc;保护现场
PUSHPSW
SETBRS0;选择寄存器工作区
CLRRS1
MOVA,SBUF;接收主机发送来的地址
XRLA,#SLAV;比较与本从机地址相符否
JZSS1;相同,则转接收以下的数据
SRET:
POPPSW;不相符,则恢复现场,中断返回
POPAcc
RETI
SS1:
CLRSM2;准备接收数据
MOVSBUF,#SLAV;发回本机地址回复主机
JNBTI,$;等待发送完毕
CLRTI
JNBRI,$;等待主机应答
CLRRI
JNBRB8,SS2;若受到RB8=0则从机转接收命令帧
SETBSM2;否则置位SM2并返回等待主机重新联络
SJMPSRET
SS2:
MOVA,SBUF
CJNEA,#0AH,SS20;判断命令正确否
SS20:
JCSS3;A<10,命令正确,则转命令散转处理
MOVSBUF,#80H;A>=10,非法命令,则向主机回复ERR=1
JNBTI,$
CLRTI
SJMPSRET;发送出错报告后返回等待主机重新联络
SS3:
MOVDPTR,#TAB;置DPTR为命令表首地址
MOVB,A;将命令暂存在B寄存器中B=A
RLA;左移实现A*2
ADDA,B;3A→A(因为LJMP指令为3字节)
JMP@A+DPTR;命令散转指令
TAB:
LJMPCOMD0;从机接收数据
LJMPCOMD1;从机发送数据
LJMPWEBCAM-UP;从机将摄像头上转
LJMPWEBCAM-DOWN;从机将摄像头下转
LJMPWEBCAM-LEFT;从机将摄像头左转
LJMPWEBCAM-RIGHT;从机将摄像头右转
LJMPFOCUS-IN;从机将摄像头焦距调大
LJMPFOCUS-OUT;从机将摄像头焦距调小
LJMPVOLTAGE-L;从机将摄像头电压调大
LJMPVOLTAGE-S;从机将摄像头电压调小
COMD1:
JBPSW.5,SS4;本从机发送标志位为1,则转从机发送SS4
MOVSBUF,#00H;否则发送TRDY=0状态字,表示从机发送未准备好
JNBTI,$
CLRTI
LJMPSRET;发送未准备就绪,返回
SS4:
MOVSBUF,#02H;向主机发送TRDY=1表示发送准备就绪
JNBTI,$
CLRTI
CLRPSW.5;清发送准备就绪标志位
L_STLP:
MOVA,R4
MOVR7,A;暂存数据块长度
MOVSBUF,R4;从机开始发送数据块长度
JNBTI,$
CLRTI
TX_DATA:
MOVA,@R0;向主机发送数据
MOVSBUF,A
JNBTI,$
CLRTI
ADDA,R6 ;发数据时计算累加和
MOVR6,A;累加和存入R6
INCR0
DJNZR4,TX_DATA
MOVA,R6
MOVSBUF,A
JNBTI,$
CLRTI
JNBRI,$;等待主机应答
CLRRI
MOVA,SBUF;接受应答信
CLRCy
SUBBA,#81H
JZRE_SEND;收到应答是81H则重新发送数据
SETBSM2;全部数据发送成功,则置位SM2
LJMPSRET;转中断返回
RE_SEND:
MOVA,R7;恢复该数据块长度
MOVR4,A
CLRCy;清进位标志为恢复该数据块首地址R0做准备
MOVA,R0
SUBBA,R4;恢复该数据块首地址R0
MOVR0,A
MOVR6,#00H;累加和复位
AJMPL_STLP;从机重新发送
COMD0:
JBPSW.1,SS5;PSW.1=1,接收已准备好,转
MOVSBUF,#00H;PSW.1=0,接收未准备好,发送RRDY=0状态字
JNBTI,$
CLRTI
LJMPSRET;转中断返回
SS5:
MOVSBUF,#01H;发送接收已准备就绪信号,RRDY=1
JNBTI,$
CLRTI
CLRPSW.1;清接收准备就绪标志
L_SRLP:
JNBRI,$;接收主机发送数据块长度
CLRRI
MOVA,SBUF
MOVR5,A;存放数据块长度
MOVR7,A;暂存数据块长度
RX_DATA:
JNBRI,RX_DATA;接收数据
CLRRI
MOVA,SBUF
MOV@R1,A;存放数据并计算校验和
ADDA,R6
MOVR6,A
INCR1
DJNZR5,RX_DATA ;判全部数据接收完毕否,未完继续
JNBRI,$;接收主机发来的数据校验和
CLRRI
MOVA,SBUF
CJNEA,R6,ERROR;校验和不正确,则发81H表明数据出错
SETBSM2;正确接收完毕,复位
LJMPSRET;转中断返回
ERROR:
MOVSBUF,#81H
JNBTI,$
CLRTI
MOVA,R7;恢复R5(收到该数据块的长度)以便恢复R1值
MOVR5,A
LOOP:
DECR1;恢复R0首地址
DJNZR5,LOOP
MOVR6,00H ;恢复累加和
AJMPL_SRLP ;重新等待接收
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 主机 通信 子程序 如下 要点