;程序用于单纯的验证液晶是否可用 05.08.12
; 主程序
ORG 0000H
AJMP MAIN
ORG 0030H
COM EQU 40H ;片内指令寄存器
DAT EQU 41H ;片内数据寄存器
CWADD EQU 0F000H ;指令口写地址cwadd
CRADD EQU 0F400H ;指令口读地址cradd
DWADD EQU 0F200H ;数据口写地址dwadd
DRADD EQU 0F600H ;数据口读地址dradd
MAIN: MOV SP,#60H
ANL P3,#0C0H
LCALL INT
LCALL CLEAR
MOV COM,#06H ; ??????
LCALL PR1
MOV COM,#80H
LCALL PR1
MOV DPTR,#TAB ; ???????
MOV R2,#12
MOV R3,#00H
WRIN: MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
LCALL DELAY
INC R3
DJNZ R2,WRIN
; SJMP $
TAB: DB 43H,75H,72H,73H,6FH,72H,20H ;Cursor
DB 57H,72H,69H,74H,65H ;write
;初始化子程序
INT: MOV A,#30H ;30H:8位数据接口 一行 5*7点阵字符
MOV DPTR,#CWADD
MOV R2,#03H
INT1: MOVX @DPTR,A
LCALL DELAY
DJNZ R2,INT1
MOV COM,#30H
LCALL PR1
MOV COM,#01H ;清屏
LCALL PR1
MOV COM,#06H ;设置输入方式,什么是AC?
LCALL PR1
MOV COM,#0FH ;显示开关控制
LCALL PR1
RET
DELAY: MOV R3,#00H ; ?????
MOV R4,#00H
DELAY1: NOP
DJNZ R4,DELAY1
DJNZ R3,DELAY1
ret
;读BF和AC子程序
PR0: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CRADD
MOVX A,@DPTR
MOV COM,A
POP ACC
POP DPL
POP DPH
RET
;写指令代码子程序
PR1: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CRADD
PR11: MOVX A,@DPTR
JB ACC.7,PR11
MOV A,COM
MOV DPTR,#CWADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
;写显示数据子程序
PR2: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CRADD
PR21: MOVX A,@DPTR
JB ACC.7,PR21
MOV A,DAT
MOV DPTR,#DWADD
MOVX @DPTR,A
POP ACC
POP DPL
POP DPH
RET
;读显示数据子程序
PR3: PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#CRADD
PR31:MOVX A,@DPTR
JB ACC.7,PR31
MOV DPTR,#DRADD
MOVX A,@DPTR
MOV DAT,A
POP ACC
POP DPL
POP DPH
RET
;清屏子程
CLEAR: MOV COM,#01H ; ??
LCALL PR1
RET
;//////////////////////////////////////////////////
end