?? text1.a
字號:
;A15=E的選通信號,A9=R/W,A8=RS
COM EQU 20H ;指令寄存器
DAT EQU 21H ;數據寄存器
TEMP EQU 22H
CW_Add EQU 8000H ;指令口寫地址
CR_Add EQU 8200H ;指令口讀地址
DW_Add EQU 8100H ;數據口寫地址
DR_Add EQU 8300H ;數據口讀地址
;初始化演示程序
MAIN: MOV SP,#60H
MOV TEMP,#00H
LCALL INT
LCALL COUNTER
;計數
COUNTER: MOV COM,#06H ;輸入方式設置
LCALL PR1
MOV COM,#80H ;設置DDRAM 地址
LCALL PR1
MOV A,TEMP
MOV B,#100
DIV AB
LCALL DIS
MOV A,B
MOV B,#10
DIV AB
LCALL DIS
MOV A,B
LCALL DIS
LCALL DELAY20MS
INC TEMP
SJMP COUNTER
;直接訪問方式下的初始化子程序
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,#0CH ;設置顯示方式
LCALL PR1
RET
;顯示
DIS: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2 ;寫數據
RET
;讀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
;注:*工作方式參數根據所使用的字符型液晶顯示模塊的特性而定。
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
TAB: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -