📄 显示.asm
字号:
RS EQU P3.7
RW EQU P3.6
E EQU P3.5
ORG 0000H
LJMP START
ORG 0100H
START:
LCALL DIR
LJMP START
DIR:
MOV P2,#0FFH
MOV P1,#01H ;清除屏幕
ACALL ENABLE
MOV P1,#38H ;8位点阵
ACALL ENABLE
MOV P1,#0FH ;开显示
ACALL ENABLE
MOV P1,#06H ;移动光标
ACALL ENABLE
MOV P1,#80H ;显示位置
ACALL ENABLE
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DL3: MOV P1,#01H
ACALL ENABLE
;MOV R0,#40H ;送第一句话
;CALL WRITE0
MOV DPTR,#TABLE1
CALL WRITE1
CALL ENABLE
MOV P1,#01H
MOV P1,#0C0H ;写入显示起始地址(第二行第一个位置)
ACALL ENABLE ;调用写入命令子程序
MOV DPTR,#TABLE2 ;送第二句话
CALL WRITE1
CALL ENABLE
MOV P1,#01H
CALL DELAY1
CALL DELAY1
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ENABLE: ;送命令
CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WRITE1: ;送字符串
MOV R1,#00H
A1: MOV A,R1
MOVC A,@A+DPTR
CALL WRITE2
INC R1
CJNE A,#00H,A1 ;以00H做字符串结束标志
RET
;~~~~~~~~~~~~~~~~~~~~~~~
WRITE0: ;送字符串
MOV R0,#40H
MOV R1,#10H
CALL DELAY1
DA0: MOV A,@R0
MOV DPTR,#TABLE3
MOVC A,@A+DPTR
CALL WRITE2
INC R0
DJNZ R1,DA0 ;以00H做字符串结束标志
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WRITE2: ;送单个字符
MOV P1,A
SETB RS
CLR RW
CLR E
CALL DELAY
SETB E
RET
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DELAY: ;延时子程序
MOV R7,#125
D1: MOV R6,#255
D2: DJNZ R6,D2
DJNZ R7,D1
RET
DELAY1:
MOV R7,#255
DELAY2:
MOV R6,#255
DJNZ R6,$
DJNZ R7,DELAY2
RET
;以下每个表格都是一句话,以00H作为每句话的结尾.
TABLE1: DB 20H,20H,20H,57H,45H,4CH,43H,4FH,4DH,45H,20H,54H,4FH,20H,20H,20H,20H,00H
TABLE2: DB 57H,57H,57H,2EH,41H,50H,30H,32H,30H,35H,35H,2EH,43H,4FH,4DH,20H,20H,00H
TABLE3: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H,47H,48H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -