密码锁51汇编程序Word文档下载推荐.docx
- 文档编号:20592663
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:19
- 大小:21.49KB
密码锁51汇编程序Word文档下载推荐.docx
《密码锁51汇编程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《密码锁51汇编程序Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
LCALLGAI;
调用修改系统的子程序
LJMPLOOP3
;
此为修改系统子程序,根据不同的界面P,A,B,C,调用不同的界面修改程序
GAI:
PUSHPSW
DECA;
P界面为准备界面,A界面为输入密码界面,B界面为密码正确后的用户界面,C为修改密码界面
SETBRS0;
A界面共有三次输入密码的机会,分别用A1,A2,A3表示,三次密码均错误则返回至准备界面
CLRRS1;
B界面有不同的功能,按键不同,功能不同,C界面分为输入密码和确认密码界面,用C1和C2表示
MOVR0,#47H
GAIPP:
CJNE@R0,#12H,GAIAP;
判断是否为P界面
LCALLGAIP
LJMPGAI1
GAIAP:
CJNE@R0,#0AH,GAIBP;
判断是否为A界面
LCALLGAIA
GAIBP:
CJNE@R0,#0BH,GAICP;
判断是否为B界面
LCALLGAIB
GAICP:
CJNE@R0,#0CH,GAIDP;
判断是否为C界面
LCALLGAIC
GAIDP:
LCALLGAID;
判断是否为其他,其他均归为系统崩溃
GAI1:
POPPSW
RET
;
此为界面P程序
GAIP:
CJNEA,#0EH,GAIPT;
界面P中判断是否为确认键
LCALLQUEP
GAIPT:
RET
QUEP:
MOVR0,#40H;
P界面的确认子程序
CJNE@R0,#10H,QUEPT;
若处于锁屏计数状态,确认键无效
MOV47H,#0AH;
若未处于锁屏技术状态,按下确认键则修改为A界面,即理解为进入A界面
MOV46H,#01H
QUEPT:
RET
此为界面A程序
GAIA:
CJNEA,#0FH,FTUIA;
界面A中有有四种键,分别为退出,确认,删除,数字,此为判断是否为退出键
LCALLTUI
LJMPGAIAT
FTUIA:
CJNEA,#0EH,FQUEA;
界面A中判断是否为确认键
LCALLQUEA
FQUEA:
CJNEA,#0DH,FSHANA;
判断是否为删除键
LCALLSHAN
FSHANA:
LCALLSHU;
调用输入密码程序
GAIAT:
此为界面B程序
GAIB:
CJNEA,#0FH,FTUIB;
B界面有三种键,分别为功能键,修改密码键,退出键,此为判断是否为退出键
LCALLTUIB
LJMPGAIBT
FTUIB:
CJNEA,#0EH,FXIUB;
判断是否为修改密码键
LCALLXIUB
FXIUB:
CJNEA,#00H,GAIBT
LCALLGAIB0
GAIBT:
此为界面C程序
GAIC:
CJNEA,#0FH,FTUIC;
判断是否为退出键
LCALLTUIC
LJMPGAICT
FTUIC:
CJNEA,#0EH,FQUEC;
判断是否为确认键
LCALLQUEC
FQUEC:
CJNEA,#0DH,FSHANC;
FSHANC:
LCALLSHU
GAICT:
;
此为防系统崩溃程序
GAID:
CJNEA,#0FH,FTUID
FTUID:
此为A界面的部分子程序
QUEA:
MOVR0,#5AH;
A界面的确认程序
CJNE@R0,#06H,QUEAT;
输入密码不足六位
LCALLPMI
JZQUEAZ
LCALLMING;
密码错误,蜂鸣报警
MOVR0,#46H
CJNE@R0,#03H,FSANA
LCALLQING;
错误次数达到三次,返回准备界面,即P界面,并锁住界面60S,六十秒之后才能再次输入密码
LCALLSUO
MOV46H,#10H
MOV47H,#12H
LJMPQUEAT
FSANA:
INC46H;
错误密码次数不足三次,次数自加一,调用清屏程序
LCALLQING
QUEAZ:
LCALLQING;
输入密码正确,进入用户界面,即B界面
CLRTR1;
关闭报警
SETBP3.1
MOV47H,#0BH
MOV46H,#10H
QUEAT:
MING:
MOVTMOD,#11H;
报警子程序,利用定时器1定时中断,密码错误的后六秒钟,逢偶数秒报警
MOVTL1,#0B0H;
赋初值50ms
MOVTH1,#3CH
MOV3EH,#0AH;
一秒分为20个50ms,次数20存放在3EH单元中
MOV3DH,#00H;
秒数计数
SETBEA
SETBET1
SETBTR1
DING1:
MOVTL1,#0B0H;
定时器1中断服务程序,每隔一秒,蜂鸣一次
DEC3EH
PUSHACC
MOVA,3EH
JNZDING1T;
判断是否定时满一秒,不满一秒直接返回
MOV3EH,#0AH
INC3DH
CPLP3.1;
蜂鸣状态取反
MOVA,3DH
CJNEA,#0CH,DING1T;
是否蜂鸣三次
CLRTR1
DING1T:
POPACC
RETI
SUO:
MOV40H,#00H;
锁屏子程序,密码错误次数达三次,利用定时器0定时,60秒之后才能解锁,锁屏时间在数码管上显示
MOV41H,#06H
MOVTMOD,#11H
MOVTL0,#0B0H;
每次定时时间为50ms
MOVTH0,#3CH
MOV3FH,#14H;
一秒的时间分为20次50ms,次数存放于3FH中
SETBET0
SETBTR0
DING0:
MOVTL0,#0B0H;
定时器0的中断服务子程序,每过一秒,锁屏时间减一
MOVTH0,#3CH;
重置初值50ms
DEC3FH
MOVA,3FH
JNZDING0T;
如果3FH内容不为零,说明未满一秒,直接返回
MOV3FH,#14H;
如果满一秒,重置计数次数
MOVA,40H
JZGE0;
判断个位是否为零
DEC40H
LJMPDING0T
GE0:
MOVA,41H
JZGE00;
判断十位是否为零
DEC41H
MOV40H,#09H
GE00:
MOV40H,#10H;
如果个位和十位都为零,则熄灭锁屏时间,并关闭定时器0
MOV41H,#10H
CLRTR0
DING0T:
POPACC
RETI
此为B界面的部分子程序
TUIB:
MOVR0,#46H;
B界面的退出子程序
CJNE@R0,#10H,FAN;
判断是否正在使用B界面的功能,如果正在使用,退回该功能,如果未使用,则退出B界面,返回P界面
LJMPTUIB1
FAN:
LCALLQING
TUIB1:
XIUB:
MOVR0,#46H;
B界面的修改密码子程序
CJNE@R0,#10H,XIUBT;
如果不为B的初始界面,说明正在使用功能,修改密码键不生效
MOV46H,#01H;
当未使用功能时,修改密码键生效,则修改界面为C1,表示第一次修改密码
MOV47H,#0CH
MOVR0,#48H;
将原密码转移至内部RAM54H~59H单元
MOVR1,#54H
XIUB1:
CJNER0,#4EH,XIUB1
XIUBT:
GAIB0:
MOV46H,#00H
MOV45H,#09H
MOV44H,#07H
MOV43H,#00H
MOV42H,#05H
MOV41H,#01H
MOV40H,#06H
此为界面C的部分子程序
TUIC:
LCALLHUIMI;
取消修改密码,密码恢复并退至B界面
QUEC:
MOVR0,#5AH;
C界面修改密码确认子程序
CJNE@R0,#06H,QUECT;
判断是否输入六位数,如果未满六位直接返回,确认键无效,如果满六位,确认键有效
CJNE@R0,#01H,ERCI;
判断是否是第一次输入密码还是第二次输入密码
INC46H;
第一次输入密码后按确认键,并保存第一次的密码至48H~4DH单元
MOVR0,#48H
MOVR1,#4EH
QUEC1:
MOVA,@R1
MOV@R0,A
CJNER0,#4EH,QUEC1
LJMPQUECT
ERCI:
LCALLPMI;
如果为第二次输入,则判断两次输入的密码是否相同
JZCHENG;
如果A为0,说明两次密码相同,则退出系统,回到准备界面,等待重新登录
MOV46H,#01H;
如果A不为0,说明两次密码不相同,则回到C1,重新输入第一次密码
CHENG:
LCALLTUI
LCALLI2CWQ
QUECT:
以下部分通用子程序及数据表
PMI:
MOVR0,#48H;
判断密码是否正确,正确则A赋值零,错误则A赋值非零
PMI1:
CLRC
SUBBA,@R1
JNZPMI2;
A不为0,密码错误,跳出循环
CJNER0,#4EH,PMI1
PMI2:
TUI:
LCALLQING;
退出系统,回到准备界面,即P界面
MOV46H,#10H
SHAN:
MOVA,5AH;
删除密码子程序,如果已经输入密码,则删除一位,如果未输入密码,不做操作
JZSHAN1
DEC5AH
MOVA,5AH
ADDA,#40H
MOVR0,A
MOV@R0,#10H
SHAN1:
SHU:
MOVR0,#5AH;
输入密码子程序,如果已经输入六位密码,不做操作,如果已输入密码不足六位,则添加一位
CJNE@R0,#06H,NMAN
LJMPSHU1
NMAN:
MOVR2,A;
将新输入的密码存入密码缓冲区4EH~53H,修改界面,并将密码位数加一
CJNEA,#0AH,SHU2
SHU2:
JNCSHU1;
利用CJNE会改变C的性质来比较按键值的大小,如果C为零,说明按键值大于或等于0AH,直接返回,不做操作
MOVA,#4EH
ADDA,5AH
MOVA,R2
MOVA,#40H
MOV@R0,#13H
INC5AH
SHU1:
QING:
MOV5AH,#00H;
清屏子程序,将段码0FFH送入40H~45H单元,并将密码位数清零,即把5AH单元清零
MOVR0,#40H
QING1:
MOV@R0,#10H
CJNER0,#46H,QING1
HUIMI:
恢复密码子程序,把从B界面进去C界面时保存在54H~59H单元的原密码重新送入密码区48H~4DH
HUIMI1:
CJNER0,#4EH,HUIMI1
CHA:
PUSHPSW;
查键子程序,在有键按下时使用,累加器A返回的值为1~16,对应十六个键
SETBRS0
MOVR2,#00H;
行数存于R2
MOVR3,#00H;
列数存于R3
MOVA,#0FEH;
扫描初值为0FEH
CHA1:
MOVR4,A;
行扫描
MOVP1,A
MOVA,P1
ANLA,#0F0H
XRLA,#0F0H
JZHAN
JBACC.4,SUAN;
根据A的高四位判断按键位于第几列
INCR3
JBACC.5,SUAN
JBACC.6,SUAN
JBACC.7,SUAN
MOVA,#00H
CHA3:
SUAN:
MOVB,#04H;
计算键码程序段,根据行数和列数计算键码
MULAB
ADDA,R3
INCA
LJMPCHA3
HAN:
INCR2;
修改扫描值程序段,将后一行置为低电平
MOVA,R4
RLA
CJNER2,#04H,CHA1
CPAN:
MOVP1,#0F0H;
粗判键子程序,有键按下则A非零,无键按下则A为零
MOVA,P1
XRLA,#0F0H
RET
PAN:
LCALLCPAN;
细判键子程序,包含消抖,并调用了查键子程序,无键按下时A返回0,有键按下则A返回键码1~16,对应十六个按键
JZPAN1
LCALLXIAN
LCALLCPAN
LCALLCHA
PAN2:
LCALLXIAN
LCALLCPAN
JNZPAN2
POPACC
PAN1:
YAN:
延时子程序,延时1ms
MOVR7,#02H
YAN1:
MOVR6,#00H
DJNZR6,$
DJNZR7,YAN1
POPPSW
RET
XIAN:
显示子程序,根据内部RAM的40H~47H单元内容显示
PUSHDPH
PUSHDPL
MOVR2,#00H
XIAN1:
MOVP0,#0FFH;
消影,将数码管全部熄灭
MOVDPTR,#WEI;
先送位码
MOVCA,@A+DPTR
MOVP2,A
MOVDPTR,#DUAN;
后送段码
MOVA,@R0
MOVP0,A
INCR2
LCALLYAN
CJNER2,#08H,XIAN1
MOVP0,#0FFH;
显示小数点,小数点固定在八位数码管的倒数第二位上
MOVDPTR,#WEI
MOVA,#06H
MOVDPTR,#DUAN
MOVA,#11H
POPDPL
POPDPH
24C04芯片相关程序
I2CS:
SETBSDA
LCALLYYAN
SETBSCL
CLRSDA
CLRSCL
LCALLYYAN
I2CP:
CLRSDA
SETBSDA
I2CW:
PUSHPSW
MOVR3,#08H
I2CW1:
RLCA
MOVSDA,C
CLRSCL
DJNZR3,I2CW1
I2CR:
I2CR1:
SETBSCL
MOVC,SDA
RLCA
DJNZR3,I2CR1
SETBSCL
I2CWQ:
LC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 密码锁 51 汇编程序