📄 lock.asm
字号:
ORG 0000H
GO:NOP
LCALL HEX ;开机logo
OVERQ:MOV WORD,#01H ;选择close
LCALL TCH ;把close送入显示缓存区31---36h
CLOSE:LCALL SHOW
LCALL KEY
MOV A,30H
CJNE A,#79H,CLOSE ;E键
LCALL KEYOFF ;判断按键是否弹起
LCALL input ;调入输入模块
LCALL check ;调入密码核对模块
MOV WORD,#04H ;选择open输出
LCALL TCH
TURN:LCALL SHOW
LCALL KEY
CJNE A,#5EH,TURN ;判断是否锁毕系统
LJMP GO
SHOW:MOV P1,#0
MOV A,#00H ;显示模块,入口地址31H-36H
MOV R0,#31H ;显示缓存的首地址
MOV R5,#01H
NEXT:MOV A,@R0
MOV P2,A
MOV A,R5
MOV P1,A
LCALL TIMESHOW
INC R0
RL A
MOV R5,A
CJNE R5,#080H,NEXT
RET
TIMESHOW:MOV R6,#10
DL2:MOV R7,#DL1
DL1:NOP
NOP
DJNZ R7,DL1
DJNZ R6,DL2
RET
KEY:LCALL KEY0 ;键盘模块
CJNE A,#0FFH,KEY1
RET
KEY0:MOV P0,#0FFH ;延时读状态
LCALL TIME
MOV A,P0
RET
KEY1:MOV B,A
MOV R2,#0FFH
MOV DPTR,#YCODE
KEY4:INC R2
MOV A,R2
MOVC A,@A+DPTR
CJNE A,B,KEY2
MOV DPTR,#BCODE
MOV A,R2
MOVC A,@A+DPTR
MOV 30H,A
RET
KEY2:CJNE A,#0FFH,KEY4
RET
TIME:MOV R7,#1FH
BB:MOV R6,#0AH
AA:NOP
NOP
DJNZ R6,AA
DJNZ R7,BB
RET
YCODE: DB 7EH,07DH,78H,77H,0BEH,0BDH,0BBH,0B7H,0DEH,0DDH,0DBH,0D7H,0EEH,0EDH,0EBH,0E7H,0FFH ;特征代码
BCODE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;自定义代码
input:MOV W,#60H ;输入模块
MOV WORD,#02H
MOV H34,#03H ;选择保持三位
MOV Q,#34H
LCALL TCH
BACK11:NOP
BACK1:LCALL SHOW
LCALL KEY
CJNE A,#0FFH,SQ1
SJMP BACK1
SQ1:LCALL SAVE
LCALL KEYOFF ;等待弹起
DJNZ H34,BACK11
REPT:LCALL SHOW
LCALL KEY
CJNE A,#71H,REPT
LCALL KEYOFF
SJMP SV2
SV2:MOV WORD,#03H
MOV H34,#04H
MOV Q,#33H
LCALL TCH
HQ22:NOP
HQ2:LCALL SHOW
LCALL KEY
CJNE A,#0FFH,SQ2
SJMP HQ2
SQ2:LCALL SAVE
LCALL KEYOFF
DJNZ H34,HQ22
REPT1:LCALL SHOW ;判断’F‘
LCALL KEY
CJNE A,#071H,REPT1
LCALL KEYOFF
RET
SAVE:MOV R0,#0
MOV R1,#0
MOV R0,Q
MOV @R0,A
MOV R1,W
MOV @R1,A
INC Q
INC W
RET
KEYOFF:NOP ;是否键弹起
KEYDOWN:LCALL SHOW
LCALL KEY
CJNE A,#0FFH,KEYDOWN
RET
H34 DATA 43H
Q DATA 44H
W DATA 45H
WORD DATA 41H ;显示选择地址
NO1 DATA 42H
TCH:MOV R1,#00H ;显示选择模块
MOV R0,#31H
MOV A,#00H
MOV DPTR,#HELLO
LCALL CHOOSE
MOV R1,A
NEXTBIT:MOVC A,@A+DPTR
CJNE A,#0FFH,C1
RET
C1:MOV @R0,A
INC R0
INC R1
MOV A,R1
SJMP NEXTBIT
CHOOSE:MOV A,WORD
CJNE A,#0,CH1
RET
CH1:MOV NO1,A
AG1:ADD A,#06H
DJNZ NO1,AG1
RET
HELLO:DB 76H,79H,38H,38H,3FH,00H,0FFH ;HELLO
DB 39H,38H,3FH,6DH,79H,00H,0FFH ;CLOSE
DB 06H,5EH,40H,00H,00H,00H,0FFH ;ID-
DB 06H,40H,08H,08H,08H,08H,0FFH ;]-
DB 3FH,73H,79H,37H,00H,00H,0FFH ;OPEN
check:CLR C ;密码核对
MOV R2,#0
MOV R0,#60H
MOV A,#0
MOV DPTR,#MIMA
CNEXT:MOV A,R2
MOVC A,@A+DPTR
CJNE A,#0FFH,NTQ
SETB C
MOV 70H,C
RET
NTQ:MOV B,A
MOV A,@R0
CJNE A,B,OVER ;over 为返回input处
INC R2
INC R0
SJMP CNEXT
OVER:LJMP OVERQ
MIMA:DB 77H,77H,77H,77H,77H,77H,77H,0FFH
HEX:MOV 31H,#0 ;开机logo
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV 35H,#0
MOV 36H,#0
MOV R1,#31H
MOV DPTR,#WEL
BN2:MOV R4,#5
MOV A,#00H
MOVC A,@A+DPTR
CJNE A,#0FFH,NEXT1
INC R1
CJNE R1,#37H,TY
RET
NEXT1:MOV @R1,A ;走码模块
SC:LCALL TIMESHOW
LCALL SHOW
DJNZ R4,SC
TY:INC DPL
SJMP BN2
WEL:DB 20H,30H,70H,72H,76H,0FFH
DB 01H,21H,31H,71H,79H,0FFH
DB 20H,30H,38H,0FFH
DB 20H,30H,38H,0FFH
DB 20H,30H,38H,3CH,3EH,3FH,0FFH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -