主机通信子程序如下要点.docVIP

  • 1
  • 0
  • 约4.33千字
  • 约 13页
  • 2022-11-27 发布于山东
  • 举报
主机通讯子程序以下重点 主机通讯子程序以下重点 PAGE / NUMPAGES 主机通讯子程序以下重点 主机通讯子程序以下: MOV TMOD,#20H MOV TL1,#0F3H MOV TH1,#0F3H SETB TR1 MOV PCON,#80H STAT:MOV SCON,#0D8H ;串口方式 3,同意接收, TB8=1 CLR ES ;严禁串行中止 CLP1:MOV SBUF,#0FFH ;发丧命令,所有从机 SM2=1 JNB TI , $ ;等候发送完成 CLR TI ;清发送中止标记 MOV A,R2 ;取寻址的从机地点 MOV SBUF,A;发送寻址的从机地点 JNB TI,$ ;等候发送完成 CLR TI JNB RI,$ ;等候寻址的从机应答(返回地点) CLR RI MOV A,SBUF;读从机应答信号 XRL A,R2 ;查对地点(异或,同样为 0) JNZ CLP1 ;若地点不切合,则重发 CLP2: CLR TB8 ;准备发送数据帧(只有寻址的从机才能接收) MOV SBUF,R3;发丧命令帧 JNB TI , $ ;等候发送完成 CLR TI JNB RI,$ ;等候从机应答 CLR RI MOV A,SBUF;读应答信息 JB Acc.7, CLP2 ;假如非法命令则重发( ERR=1) CJNE R3, #01H,SRX0 ;若原命令不要求从机发送,则转 STX:JNB Acc.1,CLP2 ;R3=01H要求从机发送,发送未准备好,则从头联系 STX1:JNB RI,$ ;从机发送数据块长度,主机等候接收完成 CLR RI MOV A,SBUF;主机接收数据块长度 MOV R5,A ;保留数据块长度 MOV R7,A ;暂存数据块长度 RX_DATA:JNB RI,$ ;接收从机发来的数据 CLR RI MOV A,SBUF MOV @R1,A;寄存数据并计算校验和 ADD A, R6 MOV R6, A ;寄存校验和 INC R1 ;指向下一数据储存单元 DJNZ R5,STX1 ;判所有数据接收完成否?未完持续 JNB RI,$ ;接收主机发来的数据校验和 CLR RI MOV A,SBUF CJNE A,R6,ERROR;校验和不正确,则发 81H 表示数据犯错 RET ;正确接收完成,返回 ERROR: MOV SBUF, #81H JNB TI, $ CLR TI MOV A, R7 ;恢复 R5(收到该数据块的长度)以便恢复 R1值 MOV R5, A LOOP:DEC R1 ;恢复 R1 首地点 DJNZ R5, LOOP MOV R6, 00H ;恢复累加和 AJMP STX1;从头等候接收 SRX0:JC SRX ;若原命令要求从机接收,转从机接收 RET ;不然返回 SRX:JNB Acc.0, CLP2 ;从机接收未准备好,从头联系 SRX1:MOV A,R4;从机接收已准备好则主机发送数据块长度 MOV SBUF,A WAIT1:JBC TI, SRX1 ;等候主机发送完成 SJMP WAIT1 TX_DATA:MOV A, @R0;主机发送数据,并计算校验和 MOV SBUF, A JNB TI,$ CLR TI ADD A,R6 MOV R6, A INC R0 ;指向下一发送数据 DJNZ R4, TX_DATA;判所有数据发送完成否?未完持续 MOV A,R6 ;主机发送校验和 MOV SBUF, A JNB TI, $ CLR TI JNB RI, $ ;等候从机应答 CLR RI MOV A, SBUF;接受应答信 CLR Cy SUBB A, #81H JZ RE_SEND;收到应答是 81H则从头发送数据 RET ;所有数据发送成功,则返回 RE_SEND: MOV A, R7;恢复该数据块长度 MOV R4, A LOOP: DEC R0 ;回到该数据块首地点 DJNZ R4, LOOP MOV R6, #00H ;清校验和 相关从机中止、 T1、波特率和串行口的初始化,可按以下早先达成: ORG 0023H LJMP SERVE ORG 0050H;串行中止服务程序进口 MOV TMOD,#20H ;准时器 T1 初始化工作于方式 2 MOV TL1,0F3H MOV TH1,0F3H SETB TR1 MOV PCON,#80H ; SMOD=1波特率倍增 MOV SCON,#0F0H ;串行方式 3,同意接收, SM2=1 同时,可用伪指令定义本从机地点: SLAV EQU R2,PSW.5为从机发送准备就绪状态标记( PSW.5=1,发送准备就绪), PSW.1为从机接收准备就绪状态标记( PSW.1=1接收准备就绪)。能够在主程

文档评论(0)

1亿VIP精品文档

相关文档