📄 modem2.asm
字号:
STHR EQU 0CFA0H
SIER EQU 0CFA1H
SLCR EQU 0CFA3H
SLSR EQU 0CFA5H
SLSB EQU 0CFA0H
SMSB EQU 0CFA1H
RRHR EQU 0CFA8H
RIER EQU 0CFA9H
RLCR EQU 0CFABH
RLSR EQU 0CFADH
RLSB EQU 0CFA8H
RMSB EQU 0CFA9H
CS244 EQU 0CFB0H
CSEG AT 0000H
LJMP START
CSEG AT 4100H
START: NOP
INIT_S: MOV DPTR, #SLCR ;modem1初始化
MOV A, #80H
MOVX @DPTR, A
MOV DPTR, #SLSB
MOV A, #80H
MOVX @DPTR, A
MOV DPTR, #SMSB
MOV A, #01H
MOVX @DPTR, A ;设置波特率为300
MOV DPTR, #SLCR
MOV A, #1BH
MOVX @DPTR, A ;8个数据位,1个停止位,偶校验
; MOV DPTR, #SIER
; MOV A, #01H
; MOVX @DPTR, A
MOV DPTR, #SLSR
MOVX A, @DPTR
MOV DPTR, #STHR
MOVX A, @DPTR
INIT_R: MOV DPTR, #RLCR ;modem2初始化
MOV A, #80H
MOVX @DPTR, A
MOV DPTR, #RLSB
MOV A, #80H
MOVX @DPTR, A
MOV DPTR, #RMSB
MOV A, #01H
MOVX @DPTR, A ;设置波特率为300
MOV DPTR, #RLCR
MOV A, #1BH
MOVX @DPTR, A ;8个数据位,1个停止位,偶校验
; MOV DPTR, #RIER
; MOV A, #01H
; MOVX @DPTR, A
MOV DPTR, #RLSR
MOVX A, @DPTR
MOV DPTR, #RRHR
MOVX A, @DPTR
S_DATA: MOV DPTR, #SLSR ;modem1发送
MOVX A, @DPTR
JNB ACC.5, S_DATA
MOV DPTR, #CS244 ;读开关状态
MOVX A, @DPTR
MOV DPTR, #STHR
MOVX @DPTR, A
R_DATA: MOV DPTR, #RLSR ;modem2接收
MOVX A, @DPTR
JNB ACC.0, R_DATA
MOV DPTR, #RRHR
MOVX A, @DPTR
MOV R0, A
DISP: MOV DPTR,#0CFE9H ;
MOV A,#08H
MOVX @DPTR,A
MOV DPTR,#0CFE9H ;写显示RAM命令字
MOV A,#90H
MOVX @DPTR,A
MOV A, R0 ;转换结果
ANL A,#0F0H
SWAP A
ACALL TABLE ;转换为显码
MOV DPTR,#0CFE8H ;8279数据口地址
MOVX @DPTR,A ;送显码输出
MOV A, R0 ;转换结果
ANL A,#0FH
ACALL TABLE ;转换为显码
MOV DPTR,#0CFE8H ;8279数据口地址
MOVX @DPTR,A ;送显码输出
CALL DELAY
LJMP S_DATA
DELAY: MOV R6,#255 ;延时
DEL2: MOV R5,#4
DEL3: NOP
NOP
DJNZ R5,DEL3
DJNZ R6,DEL2
RET
TABLE: INC A
MOVC A,@A+PC
RET
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -