📄 12864lcdlocker.asm
字号:
MOV A,TIMERS
CLR C
SUBB A,#01H
JNZ PS_2
MOV PS1,BUFF ;依照顺序存放密码
JNB F_6,PS_N_11
MOV NEWPRD1,PS1 ;存放修改密码的第一次输入密码的第一位
PS_N_11:
JNB F_4,PS_N_1
MOV TWOPRD1,PS1 ;存放修改密码的第二次输入密码的第一位
PS_N_1:
JB F_5,PS_A1
SETB PASSBIT1
MOV A,#9AH ;前1位密码显示INPUT:*_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#9BH
LCALL SEND_I
AJMP NEXT
KEY_OUT:
AJMP NEXT9
PS_A1:
MOV A,#8AH ;前1位密码显示INPUT:*_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#8BH
LCALL SEND_I
AJMP NEXT
PS_2:
MOV A,TIMERS
SUBB A,#02H
CLR C
JNZ PS_3
MOV PS2,BUFF
JNB F_6,PS_N_12
MOV NEWPRD2,PS2 ;存放修改密码的第一次输入密码的第二位
PS_N_12:
JNB F_4,PS_N_2
MOV TWOPRD2,PS2 ;存放修改密码的第二次输入密码的第二位
PS_N_2:
JB F_5,PS_A2
CLR PASSBIT1
SETB PASSBIT2
MOV A,#09BH ;前2位密码显示INPUT:**_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#9CH
LCALL SEND_I
AJMP NEXT
PS_A2:
MOV A,#08BH ;前2位密码显示INPUT:**_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#8CH
LCALL SEND_I
AJMP NEXT
PS_3:
MOV A,TIMERS
CLR C
SUBB A,#03H
JNZ PS_4
MOV PS3,BUFF
JNB F_6,PS_N_13
MOV NEWPRD3,PS3 ;存放修改密码的第一次输入密码的第三位
PS_N_13:
JNB F_4,PS_N_3
MOV TWOPRD3,PS3 ;存放修改密码的第二次输入密码的第三位
PS_N_3:
JB F_5,PS_A3
CLR PASSBIT2
SETB PASSBIT3
MOV A,#09CH ;前3位密码显示INPUT:***_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#9DH
LCALL SEND_I
AJMP NEXT
PS_A3:
MOV A,#08CH ;前3位密码显示INPUT:***_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#8DH
LCALL SEND_I
AJMP NEXT
PS_4:
MOV A,TIMERS
CLR C
SUBB A,#04
JNZ PS_5
MOV PS4,BUFF
JNB F_6,PS_N_14
MOV NEWPRD4,PS4 ;存放修改密码的第一次输入密码的第四位
PS_N_14:
JNB F_4,PS_N_4
MOV TWOPRD4,PS4 ;存放修改密码的第二次输入密码的第四位
PS_N_4:
JB F_5,PS_A4
CLR PASSBIT3
SETB PASSBIT4
MOV A,#09DH ;前4位密码显示INPUT:****_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#9EH
LCALL SEND_I
AJMP NEXT
PS_A4:
MOV A,#08DH ;前4位密码显示INPUT:****_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#8EH
LCALL SEND_I
AJMP NEXT
PS_5:
MOV A,TIMERS
CLR C
SUBB A,#05
JNZ PS_6
MOV PS5,BUFF
JNB F_6,PS_N_15
MOV NEWPRD5,PS5 ;存放修改密码的第一次输入密码的第五位
PS_N_15:
JNB F_4,PS_N_5
MOV TWOPRD5,PS5 ;存放修改密码的第二次输入密码的第五位
PS_N_5:
JB F_5,PS_A5
CLR PASSBIT4
SETB PASSBIT5
MOV A,#09EH ;前5位密码显示INPUT:*****_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#9FH
LCALL SEND_I
AJMP NEXT
PS_A5:
MOV A,#08EH ;前5位密码显示INPUT:*****_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#8FH
LCALL SEND_I
AJMP NEXT
PS_6:
MOV A,TIMERS
CLR C
SUBB A,#06H
JNZ NEXT
MOV PS6,BUFF
JNB F_6,PS_N_16
MOV NEWPRD6,PS6 ;存放修改密码的第一次输入密码的第六位
PS_N_16:
JNB F_4,PS_N_6
MOV TWOPRD6,PS6 ;存放修改密码的第二次输入密码的第六位
PS_N_6:
JB F_5,PS_A6
MOV A,#09FH ;前3位密码显示INPUT:***_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
AJMP NEXT
PS_A6:
MOV A,#08FH ;前3位密码显示INPUT:***_
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0F1H ;光标闪烁,后移一位
LCALL SEND_D
MOV A,#08FH
LCALL SEND_I
AJMP NEXT
NEXT:
MOV R7,TIMERS ;比较输入的次数
CJNE R7,#06H,FULL
FULL:
JC NEXT9
SETB BUF_FULL ;输入密码位数够6位,密码满标志位,置1。
MOV TIMERS,#06H ;密码够6位标志位,置1。
NEXT9:
AJMP CH_KEY
;--------------------退格键处理子程序------------------
BACKS:
NOP
NOP
JB F_7,BACKS_OUT
JB IRIN_1,BACKS_OUT
CLR BUF_FULL ;密码满标志位清零
MOV A,TIMERS
CLR C
SUBB A,#01H ;清除6位密码中的第一位,光标闪烁
JNZ BACK1
DEC TIMERS
MOV PS1,#0
JB F_5,BACK_A1
MOV A,#9AH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#09AH
LCALL SEND_I
AJMP BACK_NEXT
BACKS_OUT:
AJMP BACK_NEXT
BACK_A1:
MOV A,#8AH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#08AH
LCALL SEND_I
AJMP BACK_NEXT
BACK1:
MOV A,TIMERS
CLR C
SUBB A,#02H ;清除6位密码中的第二位,
JNZ BACK2
DEC TIMERS
MOV PS2,#0
JB F_5,BACK_A2
CLR PASSBIT1
MOV A,#9BH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#09BH
LCALL SEND_I
AJMP BACK_NEXT
BACK_A2:
MOV A,#8BH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#08BH
LCALL SEND_I
AJMP BACK_NEXT
BACK2:
MOV A,TIMERS
CLR C
SUBB A,#03H ;清除6位密码中的第三位
JNZ BACK3
DEC TIMERS
MOV PS3,#0
JB F_5,BACK_A3
CLR PASSBIT2
SETB PASSBIT1
MOV A,#9CH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#09CH
LCALL SEND_I
AJMP BACK_NEXT
BACK_A3:
MOV A,#8CH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#08CH
LCALL SEND_I
AJMP BACK_NEXT
BACK3:
MOV A,TIMERS
CLR C
SUBB A,#04H ;清除6位密码中的第四位
JNZ BACK4
DEC TIMERS
MOV PS4,#0
JB F_5,BACK_A4
CLR PASSBIT3
SETB PASSBIT2
MOV A,#9DH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#09DH
LCALL SEND_I
AJMP BACK_NEXT
BACK_A4:
MOV A,#8DH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#08DH
LCALL SEND_I
AJMP BACK_NEXT
BACK4:
MOV A,TIMERS
CLR C
SUBB A,#05H ;清除6位密码中的第五位
JNZ BACK5
DEC TIMERS
MOV PS5,#0
JB F_5,BACK_A5
CLR PASSBIT4
SETB PASSBIT3
MOV A,#9EH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#09EH
LCALL SEND_I
AJMP BACK_NEXT
BACK_A5:
MOV A,#08EH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#08EH
LCALL SEND_I
AJMP BACK_NEXT
BACK5:
MOV A,TIMERS
CLR C
SUBB A,#06H ;清除6位密码中的第六位
JNZ BACK_NEXT
DEC TIMERS
MOV PS6,#0
JB F_5,BACK_A6
CLR PASSBIT5
SETB PASSBIT4
MOV A,#9FH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#09FH
LCALL SEND_I
AJMP BACK_NEXT
BACK_A6:
MOV A,#8FH
LCALL SEND_I
MOV A,#0A1H
LCALL SEND_D
MOV A,#0A0H
LCALL SEND_D
MOV A,#08FH
LCALL SEND_I
BACK_NEXT:
AJMP CH_KEY
;*****************功能按键比较并且跳转*************
KEY_FUN:
CLR FLAG1
CLR C
MOV A,BUFF
SUBB A,#11H
JNZ MODI_K
LJMP BACKS ;跳转到退格键处理程序
MODI_K:
CLR C
MOV A,BUFF
SUBB A,#16H
JNZ ENTER_K
JB ADJ_RL,KK1 ;调整日历的时候,作为逆序调整日历功能键
LJMP MODI ;跳转到修改密码处理程序
KK1:
SETB KO
AJMP F4_K1
ENTER_K:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -