📄 text4.a
字号:
;A15=E的选通信号,A9=R/W,A8=RS
COM EQU 20H ;指令寄存器
DAT EQU 21H ;数据寄存器
CW_Add EQU 8000H ;指令口写地址
CR_Add EQU 8200H ;指令口读地址
DW_Add EQU 8100H ;数据口写地址
DR_Add EQU 8300H ;数据口读地址
;初始化演示程序
MAIN: MOV SP,#60H
ANL P3,#0C7H
LCALL INT
LCALL WRIT
;读BF和AC值
PRO: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_Add ;设置指令口读地址
MOVX A,@DPTR ;读BF和AC值
MOV COM,A ;存入COM单元
POP ACC
POP DPL
POP DPH
RET
;写指令代码子程序
PR1: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_Add ;设置指令口读地址
PR11: MOVX A,@DPTR
JB ACC.7,PR11 ;判BF=0?是继续
MOV A,COM
MOV DPTR,#CW_Add ;设置指令口写地址
MOVX @DPTR,A ;写指令代码
POP ACC
POP DPL
POP DPH
RET
;写显示数据子程序
PR2: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_Add ;设置指令口读地址
PR21: MOVX A,@DPTR
JB ACC.7,PR21 ;判BF=0?是继续
MOV A,DAT
MOV DPTR,#DW_Add ;设置数据口写地址
MOVX @DPTR,A ;写数据
POP ACC
POP DPL
POP DPH
RET
;读显示数据子程序
PR3: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CR_Add ;设置指令口读地址
PR31: MOVX A,@DPTR
JB ACC.7,PR31 ;判BF=0?是继续
MOV DPTR,#DR_Add ;设置数据口读地址
MOVX A,@DPTR ;读数据
MOV DAT,A ;存入DAT单元
POP ACC
POP DPL
POP DPH
RET
;直接访问方式下的初始化子程序
INT: MOV A,#38H ;此循环必要,不可删除
MOV DPTR,#CW_Add ;指令口地址设置
MOV R2,#03H ;循环量=3
INTU1: MOVX @DPTR,A ;写指令代码
LCALL DELAY5MS ;调延时子程序
DJNZ R2,INTU1
MOV COM,#38H ;设置工作方式*
LCALL PR1 ;
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式
LCALL PR1
MOV COM,#0FH ;设置显示方式
LCALL PR1
RET
;画面左滚动输入方式演示程序段
WRIT: MOV COM,#07H ; 输入方式设置
LCALL PR1
MOV COM,#90H ; 设置DDRAM 地址
LCALL PR1
MOV DPTR,#TABL ; 设置字表首地址
MOV R2,#0BH ; 循环量设置
MOV R3,#00H
L_1: MOV A,R3
MOVC A,@A+DPTR ;取字符代码
MOV DAT,A
LCALL PR2 ;写数据
INC R3
LCALL DELAY20MS ;演示用延时
DJNZ R2,L_1
SJMP $
;注:*工作方式参数根据所使用的字符型液晶显示模块的特性而定。
DELAY5MS: MOV R6,#04H ;延时子程序
MOV R7,#10H
DELAY1: NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
DELAY20MS: MOV R6,#0FFH ;延时子程序
MOV R7,#0FFH
DELAY2: NOP
DJNZ R7,DELAY2
DJNZ R6,DELAY2
RET
TABL: DB 4CH, 65H, 66H, 74H,20H ;Left Scroll
DB 53H, 63H, 72H, 6FH,6CH,6CH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -