📄 l045w1.asm
字号:
;PCON EQU 87H
;***********LCD10-3V TEST **************************************
;/CS=P3.5 /WR=P2.2 DATA=P2.1 ********************
;RAM 20H:COMMAND CODE ********************
;RAM 21H: LCD ADDR***
;RAM 25H: LCD DATA***
ORG 0000H
JMP START
ORG 0100H
START: MOV P1,#0FFH
SETB P3.7
CALL DLY500
MOV 20H,#00101001B ;INITIALIZE
CALL WRCOM
MOV 20H,#00011000B ;RC
CALL WRCOM
MOV 20H,#00000001B ;SYS EN
CALL WRCOM
MOV 20H,#00000011B ;LCD ON
CALL WRCOM
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 DLY1S
CALL WR123
MOV P1,#0FFH
CALL DLY1S
CALL DLY1S
CALL DLY1S
CALL DLY1S
MOV 21H,#00000000B ;DISPLAY COM1
MOV 23H,21H
MOV R6,#0
CALL WRDD
MOV 25H,#00000001B
MOV 27H,25H
CALL WRDA
CALL WALP
MOV P1,#0FFH
CALL DLY1S
CALL DLY1S
MOV 21H,#00000000B ;DISPLAY COM2
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 COM3
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 COM4
MOV 23H,21H
MOV R6,#0
CALL WRDD
MOV 25H,#00001000B
MOV 27H,25H
CALL WRDA
CALL WALP
MOV P1,#0FFH
CALL DLY1S
CALL DLY1S
STOP: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 =2KZ
CALL WRCOM
CALL DLY1S
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
CALL DLY1S
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 P3.5 ;/CS=1
NOP
CALL DLY5
CLR P3.5 ;/CS=0
CALL DLY5
CALL DLY5
CLR P2.2 ;/WR=0
CALL DLY5
NOP
SETB P2.1 ;D=1 (100)
CALL DLY5
NOP
SETB P2.2 ;/WR=1
CALL DLY5
NOP
CLR P2.2 ;/WR=0
CALL DLY5
NOP
CLR P2.1 ;D=0
CALL DLY5
NOP
SETB P2.2 ;/WR=1
CALL DLY5
NOP
CLR P2.2 ;/WR=0
CALL DLY5
NOP
CLR P2.1 ;D=0
CALL DLY5
NOP
SETB P2.2 ;/WR=1
CALL DLY5
NOP
MOV R7,#9 ;LOOP=DATA 8 BIT +1X
CLR C
LOOPWR: NOP
CALL DLY5
CLR P2.2
CALL DLY5
MOV A,20H
RLC A
MOV 20H,A
JC WR1
CLR P2.1 ;DATA=0
CALL DLY5
JMP WRR
WR1: SETB P2.1 ;DATA=1
CALL DLY5
WRR: SETB P2.2
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 P3.5 ;/CS=1
CALL DLY5
NOP
CLR P3.5 ;/CS=0
CALL DLY5
CLR P2.2 ;/WR=0
CALL DLY5
SETB P2.1 ;D=1 (101)
CALL DLY5
SETB P2.2 ;/WR=1
CALL DLY5
CLR P2.2 ;/WR=0
CALL DLY5
CLR P2.1 ;D=0
CALL DLY5
CALL DLY5
SETB P2.2 ;/WR=1
CALL DLY5
CALL DLY5
CLR P2.2 ;/WR=0
CALL DLY5
SETB P2.1 ;D=1
CALL DLY5
SETB P2.2 ;/WR=1
CALL DLY5
MOV R4,#6
MOV 22H,21H
ADDWR2: NOP
CALL DLY5
CLR P2.2
CALL DLY5
MOV A,21H
RLC A
MOV 21H,A
JC WR11
CLR P2.1 ;DATA=0
CALL DLY5
JMP WRR1
WR11: NOP
CALL DLY5
SETB P2.1 ;DATA=1
CALL DLY5
WRR1: NOP
CALL DLY5
SETB P2.2
CALL DLY5
DJNZ R4,ADDWR2
RET
;****************************************************
WRDA: MOV R5,#4 ;LOOP=DATA 4 BIT
ADDWR3: NOP
CALL DLY5
CLR P2.2
CALL DLY5
MOV A,25H
RRC A
MOV 25H,A
JC WR12
CLR P2.1 ;DATA=0
CALL DLY5
JMP WRR2
WR12: NOP
CALL DLY5
SETB P2.1 ;DATA=1
CALL DLY5
WRR2: NOP
CALL DLY5
SETB P2.2
CALL DLY5
DJNZ R5,ADDWR3
RET
DLY5: NOP
NOP
NOP
NOP
RET
DLY25M: MOV R1,#250 ;12M/2.5MS
DLOP: CALL DLY5
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 P3.5 ;/CS=1
CALL DLY5
NOP
CLR P3.5 ;/CS=0
CALL DLY5
CLR P2.2 ;/WR=0
CALL DLY5
SETB P2.1 ;D=1 (101)
CALL DLY5
SETB P2.2 ;/WR=1
CALL DLY5
CLR P2.2 ;/WR=0
CALL DLY5
CLR P2.1 ;D=0
CALL DLY5
SETB P2.2 ;/WR=1
CALL DLY5
CLR P2.2 ;/WR=0
CALL DLY5
SETB P2.1 ;D=1
CALL DLY5
SETB P2.2 ;/WR=1
CALL DLY5
MOV R2,#6
LOOP: CLR P2.2 ;/WR=0
CALL DLY5
CLR P2.1 ;D=0
CALL DLY5
SETB P2.2 ;/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 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H ;1 2 3 4 5 6
DB 00H,00H,00H,00H,00H,02H,00H,0EH,0EH,03H,00H,0AH,07H,03H,06H,05H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -