📄 hd61202lcdasm.asm
字号:
;写指令代码子程序(中)
PRM0: PUSH DPL ;;片选设置为"01"
PUSH DPH
;SETB P1.1
;CLR P1.0
;MOV A,#00100010B
;MOV P2,A
MOV DPTR,#CRADD2 ;设置读状态字地址
PRM01: MOVX A,@DPTR ;读状态字
JB ACC.7,PRM01 ;判"忙"标志为"0"否,否在读
MOV DPTR,#CWADD2 ;设置写指令代码地址
MOV A,COM ;取指令代码
MOVX @DPTR,A ;写指令代码
POP DPH
POP DPL
RET
; 写显示数据子程序(中)
PRM1: PUSH DPL ;片选设置为"01"
PUSH DPH
;SETB P1.1
;CLR P1.0
MOV DPTR,#CRADD2 ;设置读状态字地址
PRM11: MOVX A,@DPTR ;读状态字
JB ACC.7,PRM11 ;判"忙"标志为"0"否,否在读
MOV DPTR,#DWADD2 ;设置写显示数据地址
MOV A,DAT ;取数据
MOVX @DPTR,A ;写数据
POP DPH
POP DPL
RET
; 读显示数据子程序(中)
PRM2: PUSH DPL ;片选设置为"01"
PUSH DPH
;SETB P1.1
;CLR P1.0
MOV DPTR,#CRADD2 ;设置读状态字地址
PRM21: MOVX A,@DPTR ;读状态字
JB ACC.7,PRM21 ;判"忙"标志为"0"否,否在读
MOV DPTR,#DRADD2 ;设置读显示数据地址
MOVX A,@DPTR ;读数据
MOV DAT,A ;存数据
POP DPH
POP DPL
RET
; 写指令代码子程序(右)
PRR0: PUSH DPL ;片选设置为"10"
PUSH DPH
;SETB P1.0
;CLR P1.1
MOV DPTR,#CRADD3 ;设置读状态字地址
PRR01: MOVX A,@DPTR ;读状态字
JB ACC.7,PRR01 ;判"忙"标志为"0"否,否在读
MOV DPTR,#CWADD3 ;设置写指令代码地址
MOV A,COM ;取指令代码
MOVX @DPTR,A ;写指令代码
POP DPH
POP DPL
RET
; 写显示数据子程序(右)
PRR1: PUSH DPL ;片选设置为"10"
PUSH DPH
;SETB P1.0
;CLR P1.1
MOV DPTR,#CRADD3 ;设置读状态字地址
PRR11: MOVX A,@DPTR ;读状态字
JB ACC.7,PRR11 ;判"忙"标志为"0"否,否在读
MOV DPTR,#DWADD3 ;设置写显示数据地址
MOV A,DAT ;取数据
MOVX @DPTR,A ;写数据
POP DPH
POP DPL
RET
; 读显示数据子程序(右)
PRR2: PUSH DPL ;片选设置为"10"
PUSH DPH
;SETB P1.0
;CLR P1.1
MOV DPTR,#CRADD3 ;设置读状态字地址
PRR21: MOVX A,@DPTR ;读状态字
JB ACC.7,PRR21 ;判"忙"标志为"0"否,否在读
MOV DPTR,#DRADD3 ;设置读显示数据地址
MOVX A,@DPTR ;读数据
MOV DAT,A ;存数据
POP DPH
POP DPL
RET
;初始化
INITI: MOV COM,#03FH ;THE START DISPLAY LINE ,HERE IS "0" LINE 1100 0000B
LCALL PRM0
LCALL PRR0
MOV COM,#0CFH ;SET DISPLAY ON 0011 1111B
LCALL PRM0
LCALL PRR0
RET
;清屏
CLEAR: MOV R4,#00H ;SET REGISTOR OF PAGE ADDRESS
CLEAR1: MOV A,R4
ORL A,#0B8H ;"OR" THE SET CODE OF PAGE ADDRESS 1011 1000B
MOV COM,A ;SET PAGE ADDRESS
LCALL PRM0
LCALL PRR0
MOV COM,#40H ;COLUM ADDRESS = 0 0100 0000B
LCALL PRM0
LCALL PRR0
MOV R3,#40H ;CLEAR 64 BYTE/PAGE 64
CLEAR2: MOV DAT,#00H ;THE DISPLAY DATA IS 0
LCALL PRM1
LCALL PRR1
DJNZ R3,CLEAR2 ;CYCLE IN PAGE
INC R4 ;PAGE ADDRESS+1
CJNE R4,#08H,CLEAR1 ;CLEAR IN RAM
RET
;;;;;;;;;;;;;;;;;;;;;;;WRITE THE LETTER 写入字母符号
; COLUMN EQU 50H ;THE COLUMN ADDRESS
; PAGER EQU 51H ;D7=0: 6*8
; CODER EQU 52H ;
; COUNT EQU 53H
CW_PR: PUSH DPL
PUSH DPH
MOV DPTR,#CTAB ;THE LETTER ADDRESS
MOV A,CODER ;
MOV B,#08H ;8BYTE
MUL AB ;*8
ADD A,DPL ;FIRST ADDRESS OF LETTER
MOV DPL,A ;
MOV A,B
ADDC A,DPH
MOV DPH,A
MOV CODER,#00H ;AS REGISTOR
MOV A,PAGER ;READ PAGE ADDRESS
JB ACC.7,CW_1 ;
MOV COUNT,#06H ;6*8 6
LJMP CW_2
CW_1: MOV COUNT,#08H ;8*8 8
CW_2: ANL A,#07H ;PAGE ADDRESS AND 0000 0111B
ORL A,#0B8H ; OR 1011 1000B
MOV COM,A ;WRITE ADDRESS POINT
LCALL PRM0
LCALL PRR0
MOV A,COLUMN ;COLUMN ADDRESS
CLR C ;
SUBB A,#40H ;COLUMN ADDRESS-64 0100 0000B (64)10
JC CW_21 ;<0 IS LEFT
MOV COLUMN,A ;>=0 IS RIGHT
MOV A,PAGER ;
SETB ACC.5
MOV PAGER,A
LJMP CW_3
CW_21: MOV A,PAGER
SETB ACC.4
MOV PAGER,A
CW_3: MOV COM,COLUMN ;SET COLUMN ADDRESS
ORL COM,#40H ;OR 0100 0000B
MOV A,PAGER ;
ANL A,#30H ;AND 0011 0000B
CJNE A,#10H,CW_31 ;"0001 0000" IS LEFT
LCALL PRM0
LJMP CW_4
CW_31: CJNE A,#20H,CW_32 ;"0010 0000" IS RIGHT
CW_32: LCALL PRR0
LJMP CW_4
CW_4: MOV A,CODER
MOVC A,@A+DPTR ;TAKE THE LETTER
MOV DAT,A ;WRITE DATA
MOV A,PAGER ;LEFT OR RIGHT
ANL A,#30H ; 0011 0000B
CJNE A,#10H,CW_41 ; 0001 0000B LEFT
LCALL PRM1
LJMP CW_5
CW_41: CJNE A,#20H,CW_5 ; 0010 0000B RIGHT
LCALL PRR1
LJMP CW_5
CW_5: INC CODER ; CODER ADDRESS+1
INC COLUMN ; COLUMN+1
MOV A,COLUMN ; IF OUT OF THE ADDRESS?
CJNE A,#40H,CW_6 ; 0100 0000B 64
CW_6: JC CW_9 ; GO TO CW_9 IF NOT EXIT : GO ON
MOV COLUMN,#00H ;
MOV A,PAGER ;
JB ACC.5,CW_9 ;IF AT RIGHT THEN EXIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///////////////////////////////////////
;JB ACC.4,CW_61
;SETB ACC.4
;MOV PAGE, A
;MOV COM,#40H
;LCALL PRM0
;LJMP CW_9
;CW_61: SETB ACC.5 ;此处为19264所用!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;///////////////////////////////////////
SETB ACC.5 ;IF AT LEFT THEN TO RIGHT
CLR ACC.4
MOV PAGER,A
MOV COM,#40H ;MAKE THE COLUMN = 0
LCALL PRR0
CW_9: DJNZ COUNT,CW_4 ;CYCLE
POP DPH
POP DPL
RET
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -