📄 005b.asm
字号:
/***************************************************************************
****************************************************************************
* description:
* 双机通信,乙机接收程序
***************************************************************************
***************************************************************************/
MOV TMOD, #20H
MOV TH1, #0F3H
MOV TL1, #0F3H
SETB TR1
MOV SCON, #50H ;串行通信方式1,允许接收
RPT: MOV R1, #20H ;置接收缓冲区首址
L0: JBC RI, L1
AJMP L0
L1: MOV A, SBUF ;接收数据长度
MOV R6, A
MOV R5, #00H ;累加和寄存器清0
WTD: JBC RI, L2
AJMP WTD
L2: MOV A, SBUF ;接收数据
MOV @R0, A
INC R0
ADD A, R5
MOV R5, A ;计算累加效验和
DJNZ R6, WTD ;未接收完,继续
L5: JBC RI, L4 ;接收对方发来的效验和
AJMP L5
L4: MOV A, SBUF
XRL A, R5 ;接收的效验码和计算的效验码是
;否相同
MOV R5, #00H
JZ L6 ;同,转L6
MOV SBUF, #0FFH ;不同,出错发送0FFH
L8: JBC TI, L7
AJMP L8 ;等待0FFH发送完
L7: AJMP RPT ;重新接收
L6: MOV SBUF, #00H ;正确,发送00H
L9: JBC TI, L10
AJMP L9 ;等待00H发送完
L10: RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -