?? lcd_kbn.asm
字號(hào):
COMM EQU 21H
LCD_DAT EQU 40H
REC_COM EQU 23H
PWDBUF EQU 30H
SOUND EQU P0.3
RS EQU P3.6
RW EQU P3.5
EN EQU P3.4
BACK EQU P3.7
B_LIGHT EQU P0.0
COM_DATA EQU P3.3
COM_CLK EQU P3.2
RECEIVED EQU 00H
ORG 0000H
JMP MAIN
ORG 0003H
JMP COM
ORG 0040H
MAIN: CLR EN
CLR COM_CLK
SETB BACK
SETB SOUND
MOV PWDBUF,#0AAH
MOV TCON,#01H
MOV SCON,#01010000B
MOV TMOD,#00100000B
MOV PCON,#0
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1
CALL RESET
MOV COMM,#01H
CALL W_COMM
MOV COMM,#02H
CALL W_COMM
MOV COMM,#00000110B
CALL W_COMM
MOV COMM,#00001100B
CALL W_COMM
CLR B_LIGHT
MOV LCD_DAT,#4FH
MOV LCD_DAT+1,#4BH
MOV R7,#2
CALL W_DATA ;顯示“OK”
MOV SBUF,#0C3H
JNB TI,$
CLR TI
MOV R7,#0FFH
JB RI,$+5
DJNZ R7,$-3
CLR RI
MOV R6,#6
LOOP2: MOV R7,#0FFH
LOOP1: CALL DE1MS
DJNZ R7,LOOP1
DJNZ R6,LOOP2 ;DELAY 2S
CLR SOUND
MOV COMM,#00001000B ;CUT OFF DISPLAY
CALL W_COMM
MOV R7,#0FFH
S_DE: CALL DE1MS
DJNZ R7,S_DE
SETB SOUND
SETB B_LIGHT
SETB COM_CLK
SETB COM_DATA
SETB EX0
SETB EA
CONT1: JNB BACK,CONT2
BACK_REP:
CLR RI
MOV SBUF,#0E1H
JNB TI,$
CLR TI
MOV R7,#0FFH
JB RI,$+7
DJNZ R7,$-3
AJMP CONT1
CLR RI
MOV A,SBUF
CJNE A,#55H,BACK_REP
MOV R7,#0FFH
JB RI,$+7
DJNZ R7,$-3
AJMP CONT1
CLR RI
MOV A,SBUF
MOV B,A
MOV R7,#0FFH
JB RI,$+7
DJNZ R7,$-3
AJMP CONT1
CLR RI
MOV A,SBUF
CJNE A,B,BACK_REP
ANL A,#0FH
CJNE A,#00001010B,BACK_REP
CLR B_LIGHT
MOV A,B
MOV COMM,#01H
CALL W_COMM
MOV COMM,#02H
CALL W_COMM
MOV R0,#LCD_DAT
JNB ACC.7,BACK_CON
MOV DPTR,#SECURITY
JMP BACK_CON0
BACK_CON:
MOV DPTR,#DANGER
BACK_CON0:
MOV R7,#8
BACK_CON1:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R7,BACK_CON1
MOV R7,#8
CALL W_DATA
MOV COMM,#00001100B
CALL W_COMM ;顯示倒車(chē)狀態(tài)
MOV R7,#10
BACK_CON2:
CALL DE1MS
DJNZ R7,BACK_CON2
TEMP2: JMP CONT1
TEMP: JMP CONT3
CONT2: MOV COMM,#00001000B
CALL W_COMM ;CUT OFF DISPLAY
SETB B_LIGHT
JNB RECEIVED,TEMP2
CLR RECEIVED
MOV R1,REC_COM
CJNE R1,#02H,TEMP
ALERT_CON2:
CLR EA
CLR COM_CLK
CLR IE0
MOV SBUF,#0D2H
JNB TI,$
CLR TI
MOV R7,#0FFH
JB RI,$+7
DJNZ R7,$-3
AJMP ALERT_CON1
CLR RI
MOV A,SBUF ;聲光報(bào)警處理
CJNE A,#55H,ALERT_CON1
JMP CONTT3
ALERT_CON1:
MOV SBUF,#0C3H
JNB TI,$
CLR TI
MOV R7,#0FFH
JB RI,$+7
DJNZ R7,$-3
AJMP CONTT3
CLR RI
MOV A,SBUF
CJNE A,#55H,$+3
CONTT3: CLR EA
CLR COM_CLK
CLR IE0
CLR B_LIGHT
MOV COMM,#01H
CALL W_COMM
MOV COMM,#02H
CALL W_COMM
MOV R0,#LCD_DAT
MOV DPTR,#PASSWORD
MOV R7,#8
CHECK_CON1:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R7,CHECK_CON1
MOV COMM,#10000000B
CALL W_COMM ;SET AC IS 00H
MOV R7,#8
CALL W_DATA
MOV COMM,#11000000B
CALL W_COMM ;SET AC IS 40H
MOV LCD_DAT,#00111010B ;DISPLAY ":"
MOV LCD_DAT+1,#20H
MOV R7,#2
CALL W_DATA
MOV COMM,#00001111B
CALL W_COMM ;TURN ON,AND FLASH
MOV R0,#PWDBUF
MOV R6,#7
CHECK_LOOP:
MOV @R0,#0AAH
INC R0
DJNZ R6,CHECK_LOOP
MOV R0,#PWDBUF
MOV R6,#6
CHECK_LOOP1:
CALL SCANKB
CJNE A,#0AH,CHECK_CON2
CHECK1: CJNE R6,#6,CHECK_CON3
INC R6
JMP CHECK_CON4
CHECK_CON3:
INC R6
INC R6
DEC R0
MOV @R0,#0AAH
MOV P1,#0FFH
CLR RS
SETB RW
CHECK_CON5:
SETB EN
MOV A,P1
CLR EN
JB ACC.7,CHECK_CON5
CLR C
SUBB A,#1
ORL A,#10000000B
MOV COMM,A
CALL W_COMM
MOV LCD_DAT,#20H
MOV R7,#1
CALL W_DATA
MOV COMM,A
CALL W_COMM
JMP CHECK_CON4
CHECK_CON2:
CJNE A,#0BH,CHECK_CON6
JMP CHECK_EXIT
CHECK_CON6:
MOV @R0,A
INC R0
MOV LCD_DAT,#2AH ;DISPLAY "*"
MOV R7,#1
CALL W_DATA
CHECK_CON4:
DJNZ R6,CHECK_LOOP1
ACALL SCANKB
CJNE A,#0AH,$+5
AJMP CHECK1
CJNE A,#0BH,$-7
CHECK_EXIT:
CJNE R6,#6,PWD_VALID
JMP INVALID1
PWD_VALID:
MOV R0,#PWDBUF
MOV R1,#PWDBUF
MOV R7,#3
PWD11: INC R0
MOV A,@R0
CJNE A,#0AAH,PWD10
DEC R0
MOV A,@R0
MOV @R1,A
INC R1
JMP PWDEND
PWD10: SWAP A
DEC R0
ORL A,@R0
MOV @R1,A
INC R0
INC R0
INC R1
DJNZ R7,PWD11
PWDEND: MOV @R1,#0AAH
SETB EA
SETB COM_CLK
CHECK11: JNB RECEIVED,$
CLR RECEIVED
MOV COMM,#01H
CALL W_COMM
MOV COMM,#02H
CALL W_COMM
MOV COMM,#00000110B
CALL W_COMM
MOV COMM,#00001100B
CALL W_COMM
CHECK88:
JNB RECEIVED,$
CLR RECEIVED
MOV A,REC_COM
CJNE A,#04H,INVALID
CHECK0: MOV SBUF,#0C3H
JNB TI,$
CLR TI
MOV R7,#0FFH
JB RI,$+7
DJNZ R7,$-3
AJMP CONT1
CLR RI
MOV A,SBUF ;聲光報(bào)警處理
CJNE A,#55H,CHECK0
MOV LCD_DAT,#4FH
MOV LCD_DAT+1,#4BH
MOV R7,#2
CALL W_DATA ;顯示“OK”
CLR SOUND
MOV R6,#8
LOOP20: MOV R7,#0FFH
LOOP10: CALL DE1MS
DJNZ R7,LOOP10
SETB SOUND
DJNZ R6,LOOP20 ;DELAY 2S
MOV COMM,#00001000B ;CUT OFF DISPLAY
CALL W_COMM
SETB SOUND
SETB B_LIGHT
JMP CONT1
INVALID:
CLR EA
CLR COM_CLK
CLR IE0
INVALID1:
CLR SOUND
MOV COMM,#01H
CALL W_COMM
MOV COMM,#02H
CALL W_COMM
MOV COMM,#00000110B
CALL W_COMM
MOV COMM,#00001100B
CALL W_COMM
MOV R0,#LCD_DAT
MOV DPTR,#ERROR
MOV R7,#5
INV_LOOP:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R7,INV_LOOP
MOV R7,#5
CALL W_DATA
MOV R6,#8
LOOP22: MOV R7,#0FFH
LOOP11: CALL DE1MS
DJNZ R7,LOOP11
SETB SOUND
DJNZ R6,LOOP22 ;DELAY 2S
MOV COMM,#00001000B ;CUT OFF DISPLAY
CALL W_COMM
SETB SOUND
JMP CONTT3 ;CONTINUE TO CHECK PASSWORD
TEMP1: JMP CONT4
CONT3: CJNE R1,#06H,TEMP1
CLR SOUND
CLR B_LIGHT
MOV COMM,#01H
CALL W_COMM
MOV COMM,#02H
CALL W_COMM
MOV COMM,#00000110B
CALL W_COMM
MOV COMM,#00001100B
CALL W_COMM
MOV R0,#LCD_DAT
MOV DPTR,#OPENED
MOV R7,#6
OPEN1:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R7,OPEN1
MOV R7,#6
CALL W_DATA
OPEN3: MOV R7,#0B0H
OPEN2: CALL DE1MS
CALL DE1MS
DJNZ R7,OPEN2
CPL SOUND
JNB RECEIVED,OPEN3
CLR RECEIVED
MOV A,REC_COM
CJNE A,#07H,OPEN3
SETB SOUND
MOV COMM,#01H
CALL W_COMM
MOV COMM,#02H
CALL W_COMM
MOV COMM,#00000110B
CALL W_COMM
MOV COMM,#00001100B
CALL W_COMM
MOV R0,#LCD_DAT
MOV DPTR,#CLOSED
MOV R7,#6
CLOSE1:
CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
DJNZ R7,CLOSE1
MOV R7,#6
CALL W_DATA
MOV R6,#8
LOOP44: MOV R7,#0FFH
LOOP33: CALL DE1MS
DJNZ R7,LOOP33
DJNZ R6,LOOP44 ;DELAY 2S
MOV COMM,#00001000B ;CUT OFF DISPLAY
CALL W_COMM
SETB B_LIGHT
TEMP3: JMP CONT1
CONT4: CJNE R1,#03H,TEMP3
SETB RECEIVED
JMP ALERT_CON2
SCANKB:
MOV P2,#00000011B
MOV A,P2
XRL A,#00000011B
JZ SCANKB
MOV R4,#20
L_KB: CALL DE1MS
DJNZ R4,L_KB
MOV A,P2
XRL A,#00000011B
JZ SCANKB
MOV R5,#6
MOV A,#01111111B
L1_KB: PUSH ACC
MOV P2,A
MOV A,P2
ORL A,#11111100B
CPL A
JZ KBNEXT1
POP ACC
MOV A,P2
JMP L2_KB
KBNEXT1: POP ACC
SETB C
RRC A
DJNZ R5,L1_KB
JMP SCANKB
L2_KB: MOV DPTR,#KEYTABLE
MOV B,A
MOV R5,#12
L5_KB: CLR A
MOVC A,@A+DPTR
CJNE A,B,L3_KB
INC DPTR
CLR A
MOVC A,@A+DPTR
PUSH ACC
CLR SOUND
KBNEXT2: MOV P2,#00000011B
MOV A,P2
XRL A,#00000011B
JNZ KBNEXT2
MOV R4,#20
L4_KB: CALL DE1MS
DJNZ R4,L4_KB
SETB SOUND
POP ACC
RET
L3_KB: INC DPTR
INC DPTR
DJNZ R5,L5_KB
MOV A,#0FFH
RET
KEYTABLE:
DB 01111101B,0AH,01111110B,0BH,10111101B,08H,10111110B,09H
DB 11011101B,06H,11011110B,07H,11101101B,04H,11101110B,05H
DB 11110101B,02H,11110110B,03H,11111001B,00H,11111010B,01H
RESET: CLR RS
CLR RW
CLR EN
MOV P1,#30H
SETB EN
CLR EN
MOV R6,#4
L_RST: CALL DE1MS
DJNZ R6,L_RST
MOV P1,#30H
SETB EN
CLR EN
CALL DE1MS
SETB EN
CLR EN
MOV COMM,#00111000B
CALL W_COMM
RET
W_COMM: PUSH ACC
CLR RS
SETB RW
L_COMM: MOV P1,#0FFH
SETB EN
MOV A,P1
CLR EN
JB ACC.7,L_COMM
CLR RW
MOV P1,COMM
SETB EN
CLR EN
MOV P1,#0FFH
POP ACC
RET
W_DATA: PUSH 00H
PUSH ACC
MOV R0,#LCD_DAT
W_DATA1: SETB RW
CLR RS
L_DAT1: MOV P1,#0FFH
SETB EN
MOV A,P1
CLR EN
JB ACC.7,L_DAT1
CLR RW
SETB RS
SETB EN
MOV P1,@R0
CLR EN
INC R0
DJNZ R7,W_DATA1
MOV P1,#0FFH
POP ACC
POP 00H
RET
R_DATA: SETB RW
CLR RS
L_DAT2: MOV P1,#0FFH
SETB EN
MOV A,P1
CLR EN
JB ACC.7,L_DAT2
SETB RS
SETB EN
MOV LCD_DAT,P1
CLR EN
RET
DE1MS: PUSH 07H
MOV R7,#250
L_DE1MS: NOP
NOP
NOP
NOP
DJNZ R7,L_DE1MS
POP 07H
RET
COM:
CLR EA
PUSH ACC
PUSH 00H
PUSH 01H
PUSH 02H
CLR A
MOV R0,#4
COM0: MOV R2,#50
JB COM_CLK,$+7
DJNZ R2,$-3
AJMP COM2
MOV C,COM_DATA
RLC A
MOV R2,#50
JNB COM_CLK,$+7
DJNZ R2,$-3
AJMP COM2
DJNZ R0,COM0
JB ACC.3,COM2
COM1: CLR COM_DATA
MOV R1,#50
DJNZ R1,$
SETB COM_DATA
MOV REC_COM,A
CJNE A,#03H,COM_END
MOV R0,#PWDBUF
COM4: MOV A,@R0
MOV R1,#8
COM5: MOV R2,#50
JNB COM_CLK,$+7
DJNZ R2,$-3
AJMP COM2
RLC A
MOV COM_DATA,C
MOV R2,#50
JB COM_CLK,$+7
DJNZ R2,$-3
AJMP COM2
DJNZ R1,COM5
MOV A,@R0
CJNE A,#0AAH,COM6
JMP COM_END
COM6: INC R0
JMP COM4
COM_END:SETB RECEIVED
COM2: SETB COM_CLK
SETB COM_DATA
POP 02H
POP 01H
POP 00H
POP ACC
CLR IE0
SETB EA
RETI
SECURITY:
DB 53H,45H,43H,55H,52H,49H,54H,59H
DANGER:
DB 44H,41H,4EH,47H,45H,52H,20H,20H
ERROR:
DB 45H,52H,52H,4FH,52H
PASSWORD:
DB 50H,41H,53H,53H,57H,4FH,52H,44H
OPENED:
DB 4FH,50H,45H,4EH,45H,44H
CLOSED:
DB 43H,4CH,4FH,53H,45H,44H
END
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -