📄 t13j.asm
字号:
NAME T13J ;双机通讯实验
CSEG AT 0000H
LJMP START
CSEG AT 4100H
PORT EQU 0CFE8H
START: MOV DPTR,#PORT+1 ;8279命令字
MOV A,#0D1H ;清除
MOVX @DPTR,A
WAIT: MOVX A,@DPTR
JB ACC.7,WAIT ;等待清除完毕
MOV TMOD,#20H
MOV TH1,#0F2H ;初始化定时器
MOV TL1,#0F2H
SETB TR1
MOV SCON,#50H ;初始化串行口
MOV 87H,#80H
MOV 50H,#00H
MOV 51H,#00H
MOV 52H,#00H
MOV 53H,#00H
MOV 54H,#00H
MOV 55H,#00H
SJMP RXACK
DISP: MOV DPTR,#PORT+1
MOV A,#90H
MOVX @DPTR,A
MOV R6,#06H
MOV R1,#50H
MOV DPTR,#PORT
DL0: MOV A,@R1
MOVX @DPTR,A
INC R1
DJNZ R6,DL0
RET
RXACK: JBC RI,IF06H ;接收呼叫信号
SJMP RXACK
IF06H: MOV A,SBUF ;判断呼叫是否有误
CJNE A,#06H,TX15H
TX00H: MOV A,#00H
MOV SBUF,A
WAIT1: JBC TI,RXBYTES ;等待应答信号发送完
SJMP WAIT1
TX15H: MOV A,#0F0H ;向甲机报告接收的呼叫信号不正确
MOV SBUF,A
WAIT2: JBC TI,HAVE1
SJMP WAIT2
HAVE1: SJMP RXACK
RXBYTES:JBC RI,HAVE2
SJMP RXBYTES
HAVE2: MOV A,SBUF
MOV R7,A
MOV A,#0FH
MOV SBUF,A
WAIT3: JBC TI,LOOP1
SJMP WAIT3
LOOP1: MOV DPTR,#PORT+1
MOV A,#0A0H ;显示消隐命令
MOVX @DPTR,A
MOV 50H,51H
MOV 51H,52H
MOV 52H,53H
MOV 53H,54H
MOV 54H,55H
MOV A,R7
MOV 55H,A
LCALL DISP
LJMP RXACK
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -