基于aduc848的数字密码锁课程设计报告(编辑修改稿)内容摘要:

JNZ IN。 不是全0说明有键按下 RET。 无键按下返回IN: ACALL DELAY1。 调延时,等待按合抖动过去 MOV R2,04H。 R2做计数器,存待扫描行数 MOV R4,7FH。 R4做指针,指示待扫描行数 MOV R7,00H。 R7用于决定键号,初值置以0SCAN: MOV A,R4 RL A MOV R4,A。 以上三条调整待扫描行 MOV P2,A。 逐行扫描,被扫描行送低电平 MOV P1,00H MOV A,P1。 读回各列线电平值 MOV R3,04H。 R3做记数器,存被扫描行的待查列数NEXT: RRC A。 调整待查列 JNC FIND。 被查列为低电平,被按键找到,转FIND INC R7。 未找到,键号加一 DJNZ R3,NEXT。 被扫描行的待查列数不为0,转回NEXT DJNZ R2,SCAN。 未找到所按键,返回 RETFIND: MOV BUF,R7 MOV P2,0E0HLOOSEN:MOV A,P1 ORL A,0F0H CPL A JNZ LOOSEN。 以上几条重复全扫描,等待所按键松按 MOV A,R7。 松按后才考虑键处理,保证每按键一次,只处理一次,本条为取所按键号 ADD A,0F6H JC ORDER NUM: MOV A,01H。 键号小于等于9,是数字键,转NUM,执行数字键处理程序 XRL A,74H。 判断模式 JZ X0。 计时模式则不处理数字按键 CLR C INC 37H MOV A,0F9H ADD A,37H JC MAIN1。 输入够6个数字则等待命令键 LCALL DS1。 调用显示子程序 MOV A,R7 XCH A,45H。 存输入的密码 XCH A,44H XCH A,43H XCH A,42H XCH A,41H XCH A,40H RET ORDER: MOV A,01H。 键号大于9,是命令键,转ORDER,执行命令键处理程序 XRL A,74H JZ ORDER1。 判断模式 MOV A,R7 XRL A,0AH JZ X15。 重置 MOV A,R7 XRL A,0BH JZ X16。 重置确认 MOV A,R7 XRL A,0CH JZ X9。 输入密码确认,判断正误 MOV A,R7 XRL A,0DH JZ X2。 清零 MOV A,R7 XRL A,0EH JZ X1。 初始化密码 MOV A,R7 XRL A,0FH JZ X5。 显示时间X1: LJMP START1X2: LJMP MAINX3: LJMP MAIN2X5: MOV 74H,01H。 进入计时模式 MOV 29H,00H LJMP MAIN3X9: LJMP COMPX15: LJMP RESETX16: LJMP SET0X0: LJMP KEYORDER1: MOV A,R7 XRL A,0AH JZ X6。 分钟加一 MOV A,R7 XRL A,0BH JZ X7。 小时加一 MOV A,R7 XRL A,0CH JZ X11。 闹钟分加一 MOV A,R7 XRL A,0DH JZ X12。 闹钟小时加一 MOV A,R7 XRL A,0EH JZ X13。 显示闹钟时间 MOV A,R7 XRL A,0FH JZ X8。 回到等待密码输入 JMP X0X6: MOV A,MBF ADD A,01H DA A MOV MBF,A CJNE A,60H,X10 MOV MBF,00H MOV A,HBF ADD A,01H DA A MOV HBF,A CJNE A,24H,X10 MOV HBF,00H RETX7: MOV A,HBF ADD A,01H DA A MOV HBF,A CJNE A,24H,X10 MOV HBF,00H RETX11: MOV A,59H ADD A,01H DA A MOV 59H,A RETX12: MOV A,58H ADD A,01H DA A MOV 58H,A RETX13: MOV 29H,01H LJMP MAIN3 X8: MOV 74H,00H。 进入输密码模式 MOV 29H,00H LJMP MAINX10: RETX4: LJMP MAINRESET: MOV 37H,00H MOV A,39H CLR C RRC A。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。