📄 slave2.asm
字号:
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP SERVE
ORG 0030H
MAIN: MOV SP,#60H
MOV R5,#0
MOV R1,#51H
MOV TMOD, #20H ;设置T1工作方式
MOV TH1,#0FdH ;设置时间常数,确定波特率
MOV TL1,#0FdH
MOV SCON,#0F0H ;设置串行口工作方式
MOV PCON,#00H
SETB TR1
SETB EA
SETB ES ;允许串行口中断
LP2: MOV R7,#3
MOV R0,#51H
LP1: MOV A,@R0
MOV P0,A
LCALL DELAY
INC R0
DJNZ R7,LP1
JB 2FH.0,ERR
SJMP LP2
ERR: MOV P0,#0FFH
SJMP $
SERVE:
JBC RI,REV1 ;串行口中断服务程序
RETI
REV1: JNB RB8,REV3
MOV A,SBUF
CJNE A,#02H,REV2
CLR SM2
SETB F0
MOV SBUF,#00H
REV2: RETI
REV3: JNB F0,REVDT
MOV A,SBUF ;接收数据块长度
INC A
MOV 50H,A
CLR F0
MOV SBUF,#00H
RETI
REVDT: DJNZ 50H,RT
MOV A,SBUF ;接收校验和
XRL A,R5
JZ RIGHT
MOV SBUF,#0FFH
SETB 2FH.0
RETI
RIGHT: MOV SBUF,#00H
CLR 2FH.0
SETB SM2
MOV R5,#0
MOV R1,#51H
RETI
RT: MOV A,SBUF ;接收数据
MOV @R1,A
ADD A,R5
MOV R5,A
INC R1
MOV SBUF,#00H
RETI
DELAY: MOV R2,#0FFH ;延时子程序
AA1: MOV R3,#0FFH
AA: NOP
NOP
DJNZ R3,AA
DJNZ R2,AA1
RET
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -