📄 wg12864a.asm
字号:
;******************************************************************************
; KS0107,KS0108
;******************************************************************************
.SYMBOLS
;******************************************************************************
; DEFINE OUTPUT PORORT
;******************************************************************************
RS REG P3.0
E REG P3.4
RES REG P3.2
CS1 REG P3.3
CS2 REG P3.5
R_W REG P3.7
STP REG P2.0
S_S REG P2.1
BCD EQU 01H
;******************************************************************************
ORG 0H
LJMP START
ORG 50H
START: ;program reset start here
;INITIAL
MOV A,#40H ;Set Y Column Address >From 0
LCALL WRITE_COMMAND1
LCALL WRITE_COMMAND2
MOV A,#B8H ;Set Page From 0
LCALL WRITE_COMMAND1
LCALL WRITE_COMMAND2
MOV A,#C0H ;Set Display Start Line
LCALL WRITE_COMMAND1
LCALL WRITE_COMMAND2
MOV A,#3FH ;Set Display ON
LCALL WRITE_COMMAND1
LCALL WRITE_COMMAND2
;******************************************************************************
; FULL ON
;******************************************************************************
FULL_ON:
MOV R0,#0
MOV R1,#0
FOLOOP1:
MOV A,R1 ;Set Page Address FROM 00H
ORL A,#B8H ;Command B8H~BFH
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV A,#40H ;Set Column Address FROM 40H
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV R0,#0 ;Rest Counter
FOLOOP2: ;Write Data To Chip I
MOV A,#FFH
CALL WRITE_DATA1
INC R0
CJNE R0,#64,FOLOOP2
FOLOOP3: ;Write Data To Chip II
MOV A,#FFH
CALL WRITE_DATA2
INC R0
CJNE R0,#128,FOLOOP3
INC R1
CJNE R1,#8,FOLOOP1
LCALL DELAY
LCALL STP_SC
SJMP SHOWM
;******************************************************************************
; SHOW MODEL
;******************************************************************************
SHOWM:
MOV R0,#0
MOV R1,#0
MOV DPTR,#SHOW_WG
SMLOOP1:
MOV A,#B8H ;Set Page Address FROM 00H
ADD A,R1 ;Command B8H~BFH
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV A,#40H ;Set Column Address FROM 40H
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV R0,#0 ;Rest Counter
SMLOOP2: ;Write Data To Chip I
XRL A,A
MOVC A,@A+DPTR
CALL WRITE_DATA1
INC R0
INC DPTR
CJNE R0,#64,SMLOOP2
SMLOOP3: ;Write Data To Chip II
XRL A,A
MOVC A,@A+DPTR
CALL WRITE_DATA2
INC R0
INC DPTR
CJNE R0,#128,SMLOOP3
INC R1
CJNE R1,#8,SMLOOP1
LCALL DELAY
LCALL STP_SC
SJMP VLINE
;******************************************************************************
; VERTIAL LINE
;******************************************************************************
VLINE:
MOV R0,#0
MOV R1,#0
VLLOOP1:
MOV A,#B8H ;Set Page Address FROM 00H
ADD A,R1 ;Command B8H~BFH
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV A,#40H ;Set Column Address FROM 40H
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV R0,#0 ;Rest Counter
VLLOOP2: ;Write Data To Chip I
MOV A,#FFH
CALL WRITE_DATA1
INC R0
MOV A,#00H
CALL WRITE_DATA1
INC R0
CJNE R0,#64,VLLOOP2
VLLOOP3: ;Write Data To Chip II
MOV A,#FFH
CALL WRITE_DATA2
INC R0
MOV A,#00H
CALL WRITE_DATA2
INC R0
CJNE R0,#128,VLLOOP3
INC R1
CJNE R1,#8,VLLOOP1
LCALL DELAY
LCALL STP_SC
SJMP HLINE
;******************************************************************************
; HORIZONTAL LINE
;******************************************************************************
HLINE:
MOV R0,#0
MOV R1,#0
HLLOOP1:
MOV A,#B8H ;Set Page Address FROM 00H
ADD A,R1 ;Command B8H~BFH
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV A,#40H ;Set Column Address FROM 40H
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV R0,#0 ;Rest Counter
HLLOOP2: ;Write Data To Chip I
MOV A,#AAH
CALL WRITE_DATA1
INC R0
CJNE R0,#64,HLLOOP2
HLLOOP3: ;Write Data To Chip II
MOV A,#AAH
CALL WRITE_DATA2
INC R0
CJNE R0,#128,HLLOOP3
INC R1
CJNE R1,#8,HLLOOP1
LCALL DELAY
LCALL STP_SC
SJMP CROSS_DOT
;******************************************************************************
; CROSS DOT
;******************************************************************************
CROSS_DOT:
MOV R0,#0
MOV R1,#0
CDLOOP1:
MOV A,#B8H ;Set Page Address FROM 00H
ADD A,R1 ;Command B8H~BFH
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV A,#40H ;Set Column Address FROM 40H
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV R0,#0 ;Rest Counter
CDLOOP2: ;Write Data To Chip I
MOV A,#AAH
CALL WRITE_DATA1
INC R0
MOV A,#55H
CALL WRITE_DATA1
INC R0
CJNE R0,#64,CDLOOP2
CDLOOP3: ;Write Data To Chip II
MOV A,#AAH
CALL WRITE_DATA2
INC R0
MOV A,#55H
CALL WRITE_DATA2
INC R0
CJNE R0,#128,CDLOOP3
INC R1
CJNE R1,#8,CDLOOP1
LCALL DELAY
LCALL STP_SC
SJMP SHOWC
;******************************************************************************
; SHOW CHARACTER
;******************************************************************************
SHOWC:
MOV R0,#0
MOV R1,#0
MOV DPTR,#SHOW_CH
SCLOOP1:
MOV A,#B8H ;Set Page Address FROM 00H
ADD A,R1 ;Command B8H~BFH
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV A,#40H ;Set Column Address FROM 40H
CALL WRITE_COMMAND1
CALL WRITE_COMMAND2
MOV R0,#0 ;Rest Counter
SCLOOP2: ;Write Data To Chip I
XRL A,A
MOVC A,@A+DPTR
CALL WRITE_DATA1
INC R0
INC DPTR
CJNE R0,#64,SCLOOP2
SCLOOP3: ;Write Data To Chip II
XRL A,A
MOVC A,@A+DPTR
CALL WRITE_DATA2
INC R0
INC DPTR
CJNE R0,#128,SCLOOP3
INC R1
CJNE R1,#8,SCLOOP1
LCALL DELAY
LCALL STP_SC
LJMP START ;repeat test
;******************************************************************************
CHK_BUSY:
MOV P1,#0FFH ;SET PORT1=INPUT
CLR RS ;SET IR MODE RS=0
SETB R_W ;SET READ MODE R/W=1
SETB E ;ENABLE LCM
MOV C,P1.7 ;CHECK BUSY FLAGE(BIT7)
CLR E
JC CHK_BUSY
RET
;******************************************************************************
; DELAY
;******************************************************************************
DELAY:
CALL CBCD
MOV R4,BCD
LOPC:
MOV R5,#2FH
LOPB:
MOV R6,#0FFH
LOPA:
DJNZ R6,LOPA
DJNZ R5,LOPB
DJNZ R4,LOPC
RET
;******************************************************************************
WRITE_COMMAND1: ;Write Command To CS1
CLR CS2
SETB CS1
CLR RS
CLR R_W
MOV P1,A
SETB E
NOP
CLR E
RET
;******************************************************************************
WRITE_DATA1: ;Write Data To CS1
CLR CS2
SETB CS1
SETB RS
CLR R_W
MOV P1,A
SETB E
NOP
CLR E
RET
;******************************************************************************
WRITE_COMMAND2: ;Write Command To CS2
CLR CS1
SETB CS2
CLR RS
CLR R_W
MOV P1,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -