由于上传字节的限制,我在这里只上传了密码锁的编程部分,即使这样,还是分两篇才上传成功,供有需要的朋友参考。
5系统程序设计 5.1模块介绍
本设计的程序分为5个模块:1个主程序模块和4个子程序模块,其中子程序模块包括键盘扫描模块,修改密码模块,功能判断模块,密码核对模块。
5.1.1主程序模块 主程序模块主要起到初始化个参数,联系各子模块以及当有键按下时判断按键有无放开的作用。程序如下: MOV 30H,#01H MOV 31H,#02H MOV 32H,#03H MOV 33H,#04H MOV 34H,#05H MOV 35H,#06H MOV P2,#0FFH START:MOV R4,#00H CS:MOV R3,#01H MOV R0,#40H NJ:LCALL SM LJMP XIANXIANG L17:MOV @R0,A L15:SETB P2.0 SETB P2.1 SETB P2.2 MOV A,P2 PUSH ACC MOV A,R3 CPL A MOV R3,A POP ACC ANL A,R3 MOV P2,A MOV A,R3 CPL A MOV R3,A CJNE R3,#06H,L10 LCALL DEL1S LCALL FK LJMP HJ L10:LCALL FK INC R3 INC R0 LJMP NJ (这里插入密码核对模块) CLOCK:MOV R4,#00H SETB P2.0 SETB P2.1 SETB P2.2 JB P2.3,KS SETB P2.3 CLR P2.4 (这里插入修改密码模块) SETB P2.4 SETB P2.0 SETB P2.1 SETB P2.2 LJMP START KS:CLR P2.7 LJMP START ERROR:INC R4 SETB P2.0 SETB P2.1 SETB P2.2 CJNE R4,#06H,AA MOV P2,#0FFH LCALL DEL5MIN LJMP START AA:LJMP CS DEL10MS:MOV R7,#1FH TS1:MOV R6,#0FFH TS2:DJNZ R6,TS2 DJNZ R7,TS1 RET DEL1S:MOV R0,#63H T3:MOV R7,#15H T4:MOV R6,#0FFH T:DJNZ R6,T DJNZ R7,T4 DJNZ R0,T3 RET DEL5MIN:MOV R0,#0FFH LL:MOV R1,#0FFH KK:MOV R2,#0FFH JJ:DJNZ R2,JJ DJNZ R1,KK DJNZ R0,LL RET FK:MOV A,P1 CJNE A,# ACALL DEL10MS RET (这里插入功能判断模块) END 5.1.2键盘扫描模块
此模块的功能主要是判断有无键按下,以得出按下键所对应的键值,并将键值存入累加器。其程序如下: SM:MOV P1,# MOV R7,#0FFH L1:DJNZ R7,L1 L2:MOV A,P1 CPL A ANL A,# JZ L2 LCALL DEL10MS MOV R5,#0FEH MOV R1,#00H MOV R2,#00H L3:MOV P1,R5 NOP NOP NOP MOV A,P1 CPL A ANL A,# CJNE R1,#04H,L4 AJMP SM L4:JNZ L5 INC R1 MOV A,R5 RL A MOV R5,A AJMP L3 L5:JB ACC.4,KEY1 JB ACC.5,KEY2 JB ACC.6,KEY3 JB ACC.7,KEY4 KEY1:MOV R2,#00H LJMP L6 KEY2:MOV R2,#01H LJMP L6 KEY3:MOV R2,#02H LJMP L6 KEY4:MOV R2,#03H LJMP L6 L6:MOV A,R1 MOV B,#04H MUL AB ADD A,R2 MOV P1,# LCALL DEL10MS RET
|