📄 l0825.asm
字号:
PCON EQU 87H
;********* LCD10-3V TEST **********************
;/CS=LCD_CS /WR=LCD_CLK DATA=LCD_DATA ********************
;RAM 20H:COMMAND CODE ********************
;RAM 21H: LCD ADDR ***
;RAM 25H: LCD DATA ***
LCD_DATA EQU P1.2
LCD_CLK EQU P1.1
LCD_CS EQU P1.0
ORG 0000H
JMP START
ORG 0100H
START: MOV P1,#0FFH
SETB P3.7
CALL DLY500
MOV 20H,#00101001B ;INITIALIZE
CALL WRCOM
MOV 20H,#00010100B ;32678HZ
CALL WRCOM
MOV 20H,#00000001B ;SYS EN
CALL WRCOM
MOV 20H,#00000011B ;LCD ON
CALL WRCOM
MOV 21H,#00000000B ;CLEAR DISPLAY
MOV 23H,21H
MOV R6,#0
CALL WRDD
MOV 25H,#00000000B ;FIRST ADDR
MOV 27H,25H
CALL WRDA
CALL WALP
CALL DLY1S
MOV 21H,#00000000B ;DISPLAY 8
MOV 23H,21H
MOV R6,#0
CALL WRDD
MOV 25H,#00001111B
MOV 27H,25H
CALL WRDA
CALL WALP
MOV P1,#0FFH
CALL DLY1S
CALL DLY500 ;DISPLAY 123
MOV P1,#0FFH
CALL DLY1S
CALL WR123
MOV P1,#0FFH
CALL DLY1S
CALL DLY1S
MOV 21H,#00000000B ;DISPLAY D0
MOV 23H,21H
MOV R6,#0
CALL WRDD
MOV 25H,#00000001B
MOV 27H,25H
CALL WRDA
CALL WALP
MOV P1,#0FFH
CALL DLY1S
MOV 21H,#00000000B ;DISPLAY D1
MOV 23H,21H
MOV R6,#0
CALL WRDD
MOV 25H,#00000010B
MOV 27H,25H
CALL WRDA
CALL WALP
MOV P1,#0FFH
CALL DLY1S
MOV 21H,#00000000B ;DISPLAY D2
MOV 23H,21H
MOV R6,#0
CALL WRDD
MOV 25H,#00000100B
MOV 27H,25H
CALL WRDA
CALL WALP
MOV P1,#0FFH
CALL DLY1S
MOV 21H,#00000000B ;DISPLAY D3
MOV 23H,21H
MOV R6,#0
CALL WRDD
MOV 25H,#00001000B
MOV 27H,25H
CALL WRDA
CALL WALP
MOV P1,#0FFH
CALL DLY1S
STOP: MOV P1,#0FFH
CALL DLY1S
MOV 20H,#02H ;LCD OFF
CALL WRCOM
MOV P1,#0FFH
MOV 20H,#00H ;SYS DI
MOV 20H,#00001101B ;CTC=0
CALL WRCOM
MOV 20H,#00001001B ;BZ ON
CALL WRCOM
MOV 20H,#01100000B ;BZ =2KHZ
CALL WRCOM
CALL DLY1S
MOV 20H,#00001000B ;BZ OFF
CALL WRCOM
CALL DLY500
SETB P3.7 ;WDT LED OFF
SETB P1.7 ;TEST WDT
JNB P1.7,SE0
SETB 20H
JMP SS1
SE0: CLR 20H
SS1: NOP
MOV 20H,#10100110B ;WDT=1/16 S
CALL WRCOM
MOV 20H,#00001101B ;CTC=0
CALL WRCOM
MOV 20H,#00001110B ;WDT=0
CALL WRCOM
MOV 20H,#00000111B ;WDT ON
CALL WRCOM
MOV 20H,#10001000B ;WDT/CTC EN
CALL WRCOM
CALL DLY500 ;1S
CALL DLY500 ;1S
JNB P1.7,SE00
SETB 21H
JMP SS2
SE00: CLR 21H
SS2: JNB 20H,SS3
JB 21H,SS3
CLR P3.7 ;WDT LED OK
CALL DLY1S ;1S
CALL DLY1S ;1S
JMP SS4
SS3: SETB P3.7 ;WDT LED OFF
SS4:
MOV 20H,#00000101B ;WDT OFF
CALL WRCOM
MOV 20H,#10000000B ;WDT/CTC DIS
CALL WRCOM
MOV 20H,#00001110B ;WDT=0
CALL WRCOM
MOV 20H,#03H ;LCD ON
CALL WRCOM
JMP START
;**** LCD DRIVER MODE SUB. **************
;**** WRITE COMMAND SUB. ***********
WRCOM: SETB LCD_CS ;/CS=1
NOP
CALL DLY5
CLR LCD_CS ;/CS=0
CALL DLY5
CLR LCD_CLK ;/WR=0
CALL DLY5
NOP
SETB LCD_DATA ;D=1 (100)
CALL DLY5
NOP
SETB LCD_CLK ;/WR=1
CALL DLY5
NOP
CLR LCD_CLK ;/WR=0
CALL DLY5
NOP
CLR LCD_DATA ;D=0
CALL DLY5
NOP
SETB LCD_CLK ;/WR=1
CALL DLY5
NOP
CLR LCD_CLK ;/WR=0
CALL DLY5
NOP
CLR LCD_DATA ;D=0
CALL DLY5
NOP
SETB LCD_CLK ;/WR=1
CALL DLY5
NOP
MOV R7,#9 ;LOOP=DATA 8 BIT +1X
CLR C
LOOPWR: NOP
CALL DLY5
CLR LCD_CLK
CALL DLY5
MOV A,20H
RLC A
MOV 20H,A
JC WR1
CLR LCD_DATA ;DATA=0
CALL DLY5
JMP WRR
WR1: SETB LCD_DATA ;DATA=1
CALL DLY5
WRR: SETB LCD_CLK
CALL DLY5
DJNZ R7,LOOPWR
RET
;************************************************************
;**** LOOP WRDA SUB. ****
WALP:
ST1: MOV 21H,23H
MOV A,21H
ADD A,#00000100B
MOV 21H,A
MOV 23H,A
INC R6
CALL WRDD
MOV 25H,27H
CALL WRDA
CJNE R6,#31,ST1
RET
;**** WRITE DATA SUB.****************************
WRDD: SETB LCD_CS ;/CS=1
CALL DLY5
NOP
CLR LCD_CS ;/CS=0
CALL DLY5
CLR LCD_CLK ;/WR=0
CALL DLY5
SETB LCD_DATA ;D=1 (101)
CALL DLY5
SETB LCD_CLK ;/WR=1
CALL DLY5
CLR LCD_CLK ;/WR=0
CALL DLY5
CLR LCD_DATA ;D=0
CALL DLY5
SETB LCD_CLK ;/WR=1
CALL DLY5
CLR LCD_CLK ;/WR=0
CALL DLY5
SETB LCD_DATA ;D=1
CALL DLY5
SETB LCD_CLK ;/WR=1
CALL DLY5
MOV R4,#6
MOV 22H,21H
ADDWR2: NOP
CALL DLY5
CLR LCD_CLK
CALL DLY5
MOV A,21H
RLC A
MOV 21H,A
JC WR11
CLR LCD_DATA ;DATA=0
CALL DLY5
JMP WRR1
WR11: NOP
CALL DLY5
SETB LCD_DATA ;DATA=1
CALL DLY5
WRR1: NOP
CALL DLY5
SETB LCD_CLK
CALL DLY5
DJNZ R4,ADDWR2
RET
WRDA: MOV R5,#4 ;LOOP=DATA 4 BIT
ADDWR3: NOP
CALL DLY5
CLR LCD_CLK
CALL DLY5
MOV A,25H
RRC A
MOV 25H,A
JC WR12
CLR LCD_DATA ;DATA=0
CALL DLY5
JMP WRR2
WR12: NOP
CALL DLY5
SETB LCD_DATA ;DATA=1
CALL DLY5
WRR2: NOP
CALL DLY5
SETB LCD_CLK
CALL DLY5
DJNZ R5,ADDWR3
RET
DLY5: NOP
NOP
NOP
NOP
RET
DLY25M: MOV R1,#250 ;12M/2.5MS
DLOP: CALL DLY5
CALL DLY5
DJNZ R1,DLOP
RET
DLY1S: MOV R0,#20 ;1S
DLOP1: CALL DLY25M
CALL DLY25M
DJNZ R0,DLOP1
RET
DLY500: MOV R0,#5
DLOP11: CALL DLY25M
CALL DLY25M
DJNZ R0,DLOP11
RET
;**** LIANXV WR SUB. ****
WR123: NOP
SETB LCD_CS ;/CS=1
CALL DLY5
NOP
CLR LCD_CS ;/CS=0
CALL DLY5
CLR LCD_CLK ;/WR=0
CALL DLY5
SETB LCD_DATA ;D=1 (101)
CALL DLY5
SETB LCD_CLK ;/WR=1
CALL DLY5
CLR LCD_CLK ;/WR=0
CALL DLY5
CLR LCD_DATA ;D=0
CALL DLY5
SETB LCD_CLK ;/WR=1
CALL DLY5
CLR LCD_CLK ;/WR=0
CALL DLY5
SETB LCD_DATA ;D=1
CALL DLY5
SETB LCD_CLK ;/WR=1
CALL DLY5
MOV R2,#6
LOOP: CLR LCD_CLK ;/WR=0
CALL DLY5
CLR LCD_DATA ;D=0
CALL DLY5
SETB LCD_CLK ;/WR=1
CALL DLY5
DJNZ R2,LOOP
MOV R3,#32
MOV DPTR,#TABDA
LOOP1: CLR A
MOVC A,@A+DPTR
MOV 25H,A
CALL WRDA
INC DPTR
DJNZ R3,LOOP1
RET
TABDA: DB 0EH,0DH,0FH,00H,0AH,0FH,0AH,0DH,06H,0CH,0EH,05H,0CH,07H,0EH,0BH;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -