📄 带02的密码验证修改.asm
字号:
;******************************************************
;**********密码识别程序,原始密码820315****************
;******************************************************
;50H-55H存储比对密码
;56H-5BH,存放修改密码
;5DH,5EH暂存键值
;30-3DH,处理过的时间位
;40-46H时钟接收,发送位
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SID BIT P2.1 ;lcm12864
SCLK BIT P2.0
CLK BIT P2.3 ;KEYSET7281a
KEY BIT P3.3
DAT BIT P3.4
SCL bit P3.6
SDA bit P2.7 ;端口定义24c02
T_CLK Bit P2.4 ;实时时钟1302
T_IO Bit P2.2
T_RST Bit P2.5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BIT_COUNT EQU 7FH
TIMER EQU 7EH
TIMER1 EQU 7DH
TEMP EQU 7CH
DATA_IN EQU 7bH
DATA_OUT EQU 7aH
second EQU 40h
COM EQU 79H
DATT EQU 78H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H
LJMP MAINO
ORG 0013H ;外部中断1 ORG 0013H
LJMP KEYSET
ORG 0100H
MAINO:
MOV SP,#60H
CLR RS1
CLR RS0
SETB CLK
SETB DAT
SETB SID
SETB SCLK
;lcm
LCALL DELAY10
MOV COM,#30H ;功能设置---8BIT控制界面,基本指令集
LCALL WRI ;调用写指令子程序
LCALL DELAY10
MOV COM,#0CH ;显示打开,光标关,反白显示关,0D.0E.0FH
LCALL WRI
LCALL DELAY10
MOV COM,#01H ;清除屏幕显示,将DDRAM的地址计数器归零
LCALL WRI
;KEY
MOV TIMER,#50
START_DELAY: MOV TIMER1,#255 ;延时以确保BC728X完成复位
START_DELAY1: DJNZ TIMER1,START_DELAY1
DJNZ TIMER,START_DELAY
MOV DATA_OUT,#12H ;BC728X初始化
CALL SEND
MOV DATA_OUT,#80H ;设定为164模式, 不反相
CALL SEND ;KMS为键盘工作模式的,KMS=0,当有键按下并保
;KEY一直为低电平,直至按键恢复才变为高电
;50h-55h 56h-5Bh 5D=BCD 5E=ASCII
;TIME********* DS1302 时钟初始化 **************
mov 40h,#00h ;秒赋初值
mov 41h,#00h ;分赋初值
mov 42h,#12h ;时赋初值
mov 43h,#09h ;日赋初值
mov 44h,#12h ;月赋初值
mov 45h,#06h ;星期赋初值
mov 46h,#06h ;年赋初值
lcall set1302 ;调用初值设定子程序
;密码初值820315
mov 50H,#04H
MOV 51H,#04H
mov 52H,#04H
MOV 53H,#04H
mov 54H,#04H
MOV 55H,#04H
LCALL WRIDAT
SETB IT1 ;INT1下降沿有效
SETB EX1 ;开启中断
SETB EA ;开放所有中断
MOV 22H,#0FFH ;10h-17h数字,删除,确认,改密,改时,输密,退出。
MOV 20H,#0FFH ;00h-07h
MOV 23H,#0FFH ;六位密码的标志位18h-1Dh,分别对应密码的1-6*位
MOV 24H,#0FFH ;20-27h,20-23位确认标志用,24-27位删除标志用
MOV 25H,#0FFH ;28-2eh
MOV 2FH,#0FFH ;7E 7F为密码通过标志位
clr 06h
CLR 07H
LCALL DELAY10
LCALL SCR1
lcall delay1s
lcall delay1s
LCALL DELAY10
LCALL DELAY10
MOV COM,#01H ;清除屏幕显示,将DDRAM的地址计数器归零
LCALL WRI
MAIN:
LCALL DELAY10
JB 06H,MAIN
JB 07H,MAIN
MAIN1:
lcall get1302 ;调用时钟子程序,时钟自动加时
LCALL DIGBCD
LCALL DIP7BY
AJMP MAIN
;输入密码:
KEYCODE:
JB 18H,NXCODE2
MOV 56H,5DH
MOV 70H,5EH
SETB 18H
CLR 19H
LCALL CODEIN ;显示新输入的密码
LCALL CODEBIT;键入的数字键已经处理完毕
MOV 56H,5DH
MOV 70H,5EH
LJMP EXKYCD
NXCODE2: JB 19H,NXCODE3
MOV 57H,5DH
MOV 71H,5EH
SETB 19H
CLR 1AH
LCALL CODEIN ;显示新输入的密码
LCALL CODEBIT
LJMP EXKYCD
NXCODE3: JB 1AH,NXCODE4
MOV 58H,5DH
MOV 72H,5EH
SETB 1AH
CLR 1BH
LCALL CODEIN ;显示新输入的密码
LCALL CODEBIT
LJMP EXKYCD
NXCODE4: JB 1BH,NXCODE5
MOV 59H,5DH
MOV 73H,5EH
SETB 1BH
CLR 1CH
LCALL CODEIN ;显示新输入的密码
LCALL CODEBIT
LJMP EXKYCD
NXCODE5: JB 1CH,NXCODE6
MOV 5AH,5DH
MOV 74H,5EH
SETB 1CH
CLR 1DH
LCALL CODEIN ;显示新输入的密码
LCALL CODEBIT
LJMP EXKYCD
NXCODE6: JB 1DH,NXCODE7
MOV 5BH,5DH
MOV 75H,5EH
SETB 1DH
CLR 30H
LCALL CODEIN ;显示新输入的密码
LCALL CODEBIT
LJMP EXKYCD
NXCODE7: SETB 00H
SETB 01H
SETB 02H
CLR 30H ;表示输入密码数据完毕,等待确认键
EXKYCD:
RET
;**************************************************************************
;比较输入的密码与读出的密码是否一样,然后作出相应的指示
;比较输入的密码与读出的密码是否一样,然后作出相应的指示
COMPCODE:
MOV A,50H
CJNE A,56H,ERR
MOV A,51H
CJNE A,57H,ERR
MOV A,52H
CJNE A,58H,ERR
MOV A,53H
CJNE A,59H,ERR
MOV A,54H
CJNE A,5aH,ERR
MOV A,55H
CJNE A,5bH,ERR
LCALL MIMAOK ;密码通过
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY10
MOV COM,#01H ;清除屏幕显示
LCALL WRI
LCALL DELAY10
clr 7Fh ;表示密码通过,相关操作必须先检验是否已经为0
clr 06h ;开始正常显示
CLR 07H ;开始正常显示
RET
;*********************************
;*********************************
ERR:
MOV COM,#06H ;显示打开,光标关,反白显示关,0D.0E.0FH
LCALL WRI
LCALL DELAY10
MOV COM,#01H ;清除屏幕显示
LCALL WRI
LCALL DELAY10
MOV COM,#92H ;从第2行开始显示
LCALL WRI
MOV DATT,#0C3H ;显示"密"
LCALL WRD
MOV DATT,#0DCH
LCALL WRD
MOV COM,#93H
LCALL WRI
MOV DATT,#0C2H ;显示"码"
LCALL WRD
MOV DATT,#0EBH
LCALL WRD
MOV COM,#94H
LCALL WRI
MOV DATT,#0B4H ;显示"错"
LCALL WRD
MOV DATT,#0EDH
LCALL WRD
MOV COM,#95H
LCALL WRI
MOV DATT,#0CEH ;显示"误"
LCALL WRD
MOV DATT,#0F3H
LCALL WRD
;从第3行开始显示
MOV COM,#8AH
LCALL WRI
MOV DATT,#0C7H ;显示"请"
LCALL WRD
MOV DATT,#0EBH
LCALL WRD
MOV COM,#8BH
LCALL WRI
MOV DATT,#0D6H ;显示"重"
LCALL WRD
MOV DATT,#0D8H
LCALL WRD
MOV COM,#8CH
LCALL WRI
MOV DATT,#0D0H ;显示"新"
LCALL WRD
MOV DATT,#0C2H
LCALL WRD
MOV COM,#8DH
LCALL WRI
MOV DATT,#0CAH ;显示"输"
LCALL WRD
MOV DATT,#0E4H
LCALL WRD
MOV COM,#8EH
LCALL WRI
MOV DATT,#0C8H ;显示"入"
LCALL WRD
MOV DATT,#0EBH
LCALL WRD
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY10
MOV COM,#01H ;清除屏幕显示,
LCALL WRI
LCALL DELAY10
clr 06h
CLR 07H
RET
;***********************
MIMAOK: ; SETB 05H ;输密可以进行
MOV COM,#01H ;清除屏幕显示
LCALL WRI
LCALL DELAY10
MOV COM,#92H ;从第2行开始显示
LCALL WRI
MOV DATT,#0C3H ;显示"密"
LCALL WRD
MOV DATT,#0DCH
LCALL WRD
MOV COM,#93H
LCALL WRI
MOV DATT,#0C2H ;显示"码"
LCALL WRD
MOV DATT,#0EBH
LCALL WRD
MOV COM,#94H
LCALL WRI
MOV DATT,#0D5H ;显示"正"
LCALL WRD
MOV DATT,#0FDH
LCALL WRD
MOV COM,#95H
LCALL WRI
MOV DATT,#0C8H ;显示"确"
LCALL WRD
MOV DATT,#0B7H
LCALL WRD
MOV COM,#06H ;显示打开,光标关,反白显示关,0D.0E.0FH
LCALL WRI
LCALL DELAY10
lcall delay1s
lcall delay1s
lcall delay1s
LCALL DELAY10
MOV COM,#01H ;清除屏幕显示,
LCALL WRI
LCALL DELAY10
clr 06h
CLR 07H
CLR 13H;允许密码修改
CLR 7FH
RET
;************************************
SCR1: ; MOV COM,#01H ;清除屏幕显示,
; LCALL WRI
; LCALL DELAY10
MOV COM,#82H ;从第2行开始显示
LCALL WRI
MOV DATT,#0B0H ;显示"爱 "
LCALL WRD
MOV DATT,#0AEH
LCALL WRD
MOV COM,#83H
LCALL WRI
MOV DATT,#0B6H ;显示"尔"
LCALL WRD
MOV DATT,#0FBH
LCALL WRD
MOV COM,#84H
LCALL WRI
MOV DATT,#0C2H ;显示"玛"
LCALL WRD
MOV DATT,#0EAH
LCALL WRD
MOV COM,#85H
LCALL WRI
MOV DATT,#0BFH ;显示"科"
LCALL WRD
MOV DATT,#0C6H
LCALL WRD
MOV COM,#86H
LCALL WRI
MOV DATT,#0BCH ;显示"技"
LCALL WRD
MOV DATT,#0BCH
LCALL WRD
MOV COM,#91H ;从第3行开始显示
LCALL WRI
MOV DATT,#0BAH ;显示"虹 "
LCALL WRD
MOV DATT,#0E7H
LCALL WRD
MOV COM,#92H
LCALL WRI
MOV DATT,#0C4H ;显示"膜"
LCALL WRD
MOV DATT,#0A4H
LCALL WRD
MOV COM,#93H
LCALL WRI
MOV DATT,#0CAH ;显示"识"
LCALL WRD
MOV DATT,#0B6H
LCALL WRD
MOV COM,#94H
LCALL WRI
MOV DATT,#0B1H ;显示"别"
LCALL WRD
MOV DATT,#0F0H
LCALL WRD
MOV COM,#95H
LCALL WRI
MOV DATT,#0CFH ;显示"系"
LCALL WRD
MOV DATT,#0B5H
LCALL WRD
MOV COM,#96H
LCALL WRI
MOV DATT,#0CDH ;显示"统"
LCALL WRD
MOV DATT,#0B3H
LCALL WRD
;显示Earlma
MOV COM,#9DH
LCALL WRI
MOV DATT,#45H
LCALL WRD
MOV DATT,#61H
LCALL WRD
MOV COM,#9EH
LCALL WRI
MOV DATT,#72H
LCALL WRD
MOV DATT,#6cH
LCALL WRD
MOV COM,#9FH
LCALL WRI
MOV DATT,#6DH
LCALL WRD
MOV DATT,#61H
LCALL WRD
RET
;******************************************************************
INTCODE:
SETB 06H
SETB 07H
MOV COM,#01H ;清除屏幕显示
LCALL WRI
LCALL DELAY10
LCALL DELAY10
MOV COM,#01H ;清除屏幕显示
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -