ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:21.49KB ,
资源ID:7480906      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7480906.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(密码锁51汇编程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

密码锁51汇编程序.docx

1、密码锁51汇编程序 SCL BIT P3.2 SDA BIT P3.3 ORG 0000H LJMP MAIN ORG 000BH LJMP DING0 ORG 001BH LJMP DING1 ORG 0030HMAIN: CLR RS0 ;共有四种界面P,A,B,C,显示在第七位数码管上,对应存放地址为内部RAM的47H单元 CLR RS1 MOV SP, #5AH MOV 5AH, #00H ;已输入的密码位数存于5AH LCALL QING ;调用清屏子程序,清屏子程序包括熄灭显示区40H45H和清除已输入密码的次数 MOV 46H, #10H ;进入准备界面,设置为P界面,显示区40

2、H47H中,47H存放一级界面P,A,B,C,46H存放二级界面1,2,3等 MOV 47H, #12H LCALL I2CRQ ;调用读密码子程序 MOV A, 36H CJNE A, #55H, LOOP1 ;判断校验字节是否为55H,若为55H,表示该密码为修改之后的密码,否则将密码设置为6个8 MOV R0, #30H MOV R1, #48HLOOP4: MOV A, R0 MOV R1, A INC R0 INC R1 CJNE R1, #4EH, LOOP4 LJMP LOOP3 LOOP1: MOV R0, #48H ;系统密码存于48H4DH单元,输入的密码将存于4EH53H

3、,修改密码时的系统密码将暂存于54H59HLOOP2: MOV R0, #08H ;初始密码设置为888888 INC R0 CJNE R0, #4EH, LOOP2LOOP3: LCALL XIAN ;调用显示程序 LCALL PAN ;调用判键程序,无键按下则A为0,有键按下则A为对应键码116 JZ LOOP3 ;若无键按下,循环显示和判键,若有按键,则调用修改系统子程序,根据按键修改界面 LCALL GAI ;调用修改系统的子程序 LJMP LOOP3 ;此为修改系统子程序,根据不同的界面P,A,B,C,调用不同的界面修改程序GAI: PUSH PSW DEC A ;P界面为准备界面,

4、A界面为输入密码界面,B界面为密码正确后的用户界面,C为修改密码界面 SETB RS0 ;A界面共有三次输入密码的机会,分别用A1,A2,A3表示,三次密码均错误则返回至准备界面 CLR RS1 ;B界面有不同的功能,按键不同,功能不同,C界面分为输入密码和确认密码界面,用C1和C2表示 MOV R0, #47H GAIPP: CJNE R0, #12H, GAIAP ;判断是否为P界面 LCALL GAIP LJMP GAI1GAIAP: CJNE R0, #0AH, GAIBP ;判断是否为A界面 LCALL GAIA LJMP GAI1GAIBP: CJNE R0, #0BH, GAIC

5、P ;判断是否为B界面 LCALL GAIB LJMP GAI1GAICP: CJNE R0, #0CH, GAIDP ;判断是否为C界面 LCALL GAIC LJMP GAI1GAIDP: LCALL GAID ;判断是否为其他,其他均归为系统崩溃GAI1: POP PSW RET ;此为界面P程序GAIP: CJNE A, #0EH, GAIPT ;界面P中判断是否为确认键 LCALL QUEPGAIPT: RET QUEP: MOV R0, #40H ;P界面的确认子程序 CJNE R0, #10H, QUEPT ;若处于锁屏计数状态,确认键无效 MOV 47H, #0AH ;若未处于

6、锁屏技术状态,按下确认键则修改为A界面,即理解为进入A界面 MOV 46H, #01HQUEPT: RET ;此为界面A程序GAIA: CJNE A, #0FH, FTUIA ;界面A中有有四种键,分别为退出,确认,删除,数字,此为判断是否为退出键 LCALL TUI LJMP GAIATFTUIA: CJNE A, #0EH, FQUEA ;界面A中判断是否为确认键 LCALL QUEA LJMP GAIATFQUEA: CJNE A, #0DH, FSHANA ;判断是否为删除键 LCALL SHAN LJMP GAIATFSHANA: LCALL SHU ;调用输入密码程序GAIAT:

7、RET ;此为界面B程序GAIB: CJNE A, #0FH, FTUIB ;B界面有三种键,分别为功能键,修改密码键,退出键,此为判断是否为退出键 LCALL TUIB LJMP GAIBTFTUIB: CJNE A, #0EH, FXIUB ;判断是否为修改密码键 LCALL XIUB LJMP GAIBTFXIUB: CJNE A, #00H, GAIBT LCALL GAIB0 LJMP GAIBTGAIBT: RET ;此为界面C程序GAIC: CJNE A, #0FH, FTUIC ;判断是否为退出键 LCALL TUIC LJMP GAICTFTUIC: CJNE A, #0EH

8、, FQUEC ;判断是否为确认键 LCALL QUEC LJMP GAICTFQUEC: CJNE A, #0DH, FSHANC ;判断是否为删除键 LCALL SHAN LJMP GAICTFSHANC: LCALL SHU GAICT: RET ;此为防系统崩溃程序GAID: CJNE A, #0FH, FTUID LCALL TUIFTUID: RET ;此为A界面的部分子程序QUEA: MOV R0, #5AH ;A界面的确认程序 CJNE R0, #06H, QUEAT ;输入密码不足六位 LCALL PMI JZ QUEAZ LCALL MING ;密码错误,蜂鸣报警 MOV

9、R0, #46H CJNE R0, #03H, FSANA LCALL QING ;错误次数达到三次,返回准备界面,即P界面,并锁住界面60S,六十秒之后才能再次输入密码 LCALL SUO MOV 46H, #10H MOV 47H, #12H LJMP QUEATFSANA: INC 46H ;错误密码次数不足三次,次数自加一,调用清屏程序 LCALL QING LJMP QUEATQUEAZ: LCALL QING ;输入密码正确,进入用户界面,即B界面 CLR TR1 ;关闭报警 SETB P3.1 MOV 47H, #0BH MOV 46H, #10H QUEAT: RETMING:

10、 MOV TMOD, #11H ;报警子程序,利用定时器1定时中断,密码错误的后六秒钟,逢偶数秒报警 MOV TL1, #0B0H ;赋初值50ms MOV TH1, #3CH MOV 3EH, #0AH ;一秒分为20个50ms,次数20存放在3EH单元中 MOV 3DH, #00H ;秒数计数 SETB EA SETB ET1 SETB TR1 RETDING1: MOV TL1, #0B0H ;定时器1中断服务程序,每隔一秒,蜂鸣一次 MOV TH1, #3CH DEC 3EH PUSH ACC MOV A, 3EH JNZ DING1T ;判断是否定时满一秒,不满一秒直接返回 MOV

11、3EH, #0AH INC 3DH CPL P3.1 ;蜂鸣状态取反 MOV A, 3DH CJNE A, #0CH, DING1T ;是否蜂鸣三次 SETB P3.1 CLR TR1DING1T: POP ACC RETISUO: MOV 40H, #00H ;锁屏子程序,密码错误次数达三次,利用定时器0定时,60秒之后才能解锁,锁屏时间在数码管上显示 MOV 41H, #06H MOV TMOD, #11H MOV TL0, #0B0H ;每次定时时间为50ms MOV TH0, #3CH MOV 3FH, #14H ;一秒的时间分为20次50ms,次数存放于3FH中 SETB EA SE

12、TB ET0 SETB TR0 RETDING0: MOV TL0, #0B0H ;定时器0的中断服务子程序,每过一秒,锁屏时间减一 MOV TH0, #3CH ;重置初值50ms DEC 3FH PUSH ACC MOV A, 3FH JNZ DING0T ;如果3FH内容不为零,说明未满一秒,直接返回 MOV 3FH, #14H ;如果满一秒,重置计数次数 MOV A, 40H JZ GE0 ;判断个位是否为零 DEC 40H LJMP DING0TGE0: MOV A, 41H JZ GE00 ;判断十位是否为零 DEC 41H MOV 40H, #09H LJMP DING0TGE00

13、: MOV 40H, #10H ;如果个位和十位都为零,则熄灭锁屏时间,并关闭定时器0 MOV 41H, #10H CLR TR0DING0T: POP ACC RETI ;此为B界面的部分子程序TUIB: MOV R0, #46H ;B界面的退出子程序 CJNE R0, #10H, FAN ;判断是否正在使用B界面的功能,如果正在使用,退回该功能,如果未使用,则退出B界面,返回P界面 LCALL TUI LJMP TUIB1FAN: LCALL QING MOV 46H, #10HTUIB1: RETXIUB: MOV R0, #46H ;B界面的修改密码子程序 CJNE R0, #10H,

14、 XIUBT ;如果不为B的初始界面,说明正在使用功能,修改密码键不生效 MOV 46H, #01H ;当未使用功能时,修改密码键生效,则修改界面为C1,表示第一次修改密码 MOV 47H, #0CH MOV R0, #48H ;将原密码转移至内部RAM54H59H单元 MOV R1, #54HXIUB1: MOV A, R0 MOV R1, A INC R0 INC R1 CJNE R0, #4EH, XIUB1 XIUBT: RETGAIB0: MOV 46H, #00H MOV 45H, #09H MOV 44H, #07H MOV 43H, #00H MOV 42H, #05H MOV

15、 41H, #01H MOV 40H, #06H RET ;此为界面C的部分子程序TUIC: LCALL HUIMI ;取消修改密码,密码恢复并退至B界面 LCALL QING MOV 46H, #10H MOV 47H, #0BH RETQUEC: MOV R0, #5AH ;C界面修改密码确认子程序 CJNE R0, #06H, QUECT ;判断是否输入六位数,如果未满六位直接返回,确认键无效,如果满六位,确认键有效 LCALL QING MOV R0, #46H CJNE R0, #01H, ERCI ;判断是否是第一次输入密码还是第二次输入密码 INC 46H ;第一次输入密码后按确

16、认键,并保存第一次的密码至48H4DH单元 MOV R0, #48H MOV R1, #4EHQUEC1: MOV A, R1 MOV R0, A INC R0 INC R1 CJNE R0, #4EH, QUEC1 LJMP QUECTERCI: LCALL PMI ;如果为第二次输入,则判断两次输入的密码是否相同 JZ CHENG ;如果A为0,说明两次密码相同,则退出系统,回到准备界面,等待重新登录 MOV 46H, #01H ;如果A不为0,说明两次密码不相同,则回到C1,重新输入第一次密码 MOV 47H, #0CH LJMP QUECTCHENG: LCALL TUI LCALL

17、I2CWQ QUECT: RET ;以下部分通用子程序及数据表PMI: MOV R0, #48H ;判断密码是否正确,正确则A赋值零,错误则A赋值非零 MOV R1, #4EHPMI1: MOV A, R0 CLR C SUBB A, R1 INC R0 INC R1 JNZ PMI2 ;A不为0,密码错误,跳出循环 CJNE R0, #4EH, PMI1PMI2: RETTUI: LCALL QING ;退出系统,回到准备界面,即P界面 MOV 46H, #10H MOV 47H, #12H RETSHAN: MOV A, 5AH ;删除密码子程序,如果已经输入密码,则删除一位,如果未输入密

18、码,不做操作 JZ SHAN1 DEC 5AH MOV A, 5AH ADD A, #40H MOV R0, A MOV R0, #10HSHAN1: RETSHU: MOV R0, #5AH ;输入密码子程序,如果已经输入六位密码,不做操作,如果已输入密码不足六位,则添加一位 CJNE R0, #06H, NMAN LJMP SHU1NMAN: MOV R2, A ;将新输入的密码存入密码缓冲区4EH53H,修改界面,并将密码位数加一 CJNE A, #0AH, SHU2SHU2: JNC SHU1 ;利用CJNE会改变C的性质来比较按键值的大小,如果C为零,说明按键值大于或等于0AH,直接

19、返回,不做操作 MOV A, #4EH ADD A, 5AH MOV R0, A MOV A, R2 MOV R0, A MOV A, #40H ADD A, 5AH MOV R0, A MOV R0, #13H INC 5AHSHU1: RETQING: MOV 5AH, #00H ;清屏子程序,将段码0FFH送入40H45H单元,并将密码位数清零,即把5AH单元清零 MOV R0, #40HQING1: MOV R0, #10H INC R0 CJNE R0, #46H, QING1 RETHUIMI: MOV R0, #48H ;恢复密码子程序,把从B界面进去C界面时保存在54H59H单

20、元的原密码重新送入密码区48H4DH MOV R1, #54HHUIMI1: MOV A, R1 MOV R0, A INC R0 INC R1 CJNE R0, #4EH, HUIMI1 RETCHA: PUSH PSW ;查键子程序,在有键按下时使用,累加器A返回的值为116,对应十六个键 SETB RS0 CLR RS1 MOV R2, #00H ;行数存于R2 MOV R3, #00H ;列数存于R3 MOV A, #0FEH ;扫描初值为0FEH CHA1: MOV R4, A ;行扫描 MOV P1, A MOV A, P1 ANL A, #0F0H XRL A, #0F0H JZ

21、 HAN JB ACC.4, SUAN ;根据A的高四位判断按键位于第几列 INC R3 JB ACC.5, SUAN INC R3 JB ACC.6, SUAN INC R3 JB ACC.7, SUAN MOV A, #00HCHA3: POP PSW RETSUAN: MOV B, #04H ;计算键码程序段,根据行数和列数计算键码 MOV A, R2 MUL AB ADD A, R3 INC A LJMP CHA3HAN: INC R2 ;修改扫描值程序段,将后一行置为低电平 MOV A, R4 RL A CJNE R2, #04H, CHA1 MOV A, #00H LJMP CHA

22、3CPAN: MOV P1, #0F0H ;粗判键子程序,有键按下则A非零,无键按下则A为零 MOV A, P1 ANL A, #0F0H XRL A, #0F0H RET PAN: LCALL CPAN ;细判键子程序,包含消抖,并调用了查键子程序,无键按下时A返回0,有键按下则A返回键码116,对应十六个按键 JZ PAN1 LCALL XIAN LCALL CPAN JZ PAN1 LCALL CHA PUSH ACCPAN2: LCALL XIAN LCALL CPAN JNZ PAN2 POP ACCPAN1: RETYAN: PUSH PSW ;延时子程序,延时1ms SETB R

23、S0 CLR RS1 MOV R7, #02HYAN1: MOV R6, #00H DJNZ R6, $ DJNZ R7, YAN1 POP PSW RET XIAN: PUSH PSW ;显示子程序,根据内部RAM的40H47H单元内容显示 PUSH DPH PUSH DPL PUSH ACC CLR RS1 SETB RS0 MOV R0, #40H MOV R2, #00HXIAN1: MOV P0, #0FFH ;消影,将数码管全部熄灭 MOV DPTR, #WEI ;先送位码 MOV A, R2 MOVC A, A+DPTR MOV P2, A MOV DPTR, #DUAN ;后送

24、段码 MOV A, R0 MOVC A, A+DPTR MOV P0, A INC R0 INC R2 LCALL YAN CJNE R2, #08H, XIAN1 MOV P0, #0FFH ;显示小数点,小数点固定在八位数码管的倒数第二位上 MOV DPTR, #WEI MOV A, #06H MOVC A, A+DPTR MOV P2, A MOV DPTR, #DUAN MOV A, #11H MOVC A, A+DPTR MOV P0, A LCALL YAN POP ACC POP DPL POP DPH POP PSW RET ;24C04芯片相关程序I2CS: SETB SDA

25、 LCALL YYAN SETB SCL LCALL YYAN CLR SDA LCALL YYAN CLR SCL LCALL YYAN RETI2CP: CLR SDA LCALL YYAN SETB SCL LCALL YYAN SETB SDA LCALL YYAN RET I2CW: PUSH PSW MOV R3, #08HI2CW1: RLC A MOV SDA, C LCALL YYAN SETB SCL LCALL YYAN CLR SCL LCALL YYAN DJNZ R3, I2CW1 SETB SDA LCALL YYAN SETB SCL LCALL YYAN CLR SCL LCALL YYAN POP PSW RETI2CR: PUSH PSW MOV R3, #08HI2CR1: SETB SCL LCALL YYAN MOV C, SDA RLC A LCALL YYAN CLR SCL LCALL YYAN SETB SDA LCALL YYAN DJNZ R3, I2CR1 CLR SDA LCALL YYAN SETB SCL LCALL YYAN CLR SCL LCALL YYAN POP PSW RETI2CWQ: PUSH PSW MOV R0, #48H LC

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1