📄 密码锁(天照修改).lst
字号:
A51 MACRO ASSEMBLER 胈码薩__煺誣薷腳 01/01/2009 09:04:32 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN 密码锁(天照修改).OBJ
ASSEMBLER INVOKED BY: D:\keil\C51\BIN\A51.EXE 密码锁(天照修改).asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;*************************************************************
2 ;程序名:密码锁
3 ;
4 ;作 者:云生科技
5 ;日 期:2008-11-7
6 ;备 注:转载请注明。
7 ;*************************************************************
0030 8 LED_BIT_1 EQU 30H ;8个字节存放8位数码管的段码
0031 9 LED_BIT_2 EQU 31H
0032 10 LED_BIT_3 EQU 32H
0033 11 LED_BIT_4 EQU 33H
0034 12 LED_BIT_5 EQU 34H
0035 13 LED_BIT_6 EQU 35H
0036 14 LED_BIT_7 EQU 36H
0037 15 LED_BIT_8 EQU 37H
16
0038 17 WORD_1 EQU 38H ;6个字节存放初始密码
0039 18 WORD_2 EQU 39H
003A 19 WORD_3 EQU 3AH
003B 20 WORD_4 EQU 3BH
003C 21 WORD_5 EQU 3CH
003D 22 WORD_6 EQU 3DH
23
003E 24 KEY_1 EQU 3EH ;6个字节存放用户输入的6位密码
003F 25 KEY_2 EQU 3FH
0040 26 KEY_3 EQU 40H
0041 27 KEY_4 EQU 41H
0042 28 KEY_5 EQU 42H
0043 29 KEY_6 EQU 43H
30 ;******************************************************
0044 31 CNT_A EQU 44H
0045 32 CNT_B EQU 45H
0046 33 KEY_CNT EQU 46H ;已输出的密码位数
0047 34 LINE EQU 47H ;按键行号
0048 35 ROW EQU 48H ;按键列号
0049 36 VAL EQU 49H ;键值
37 ;******************************************************
38 ;以下为初始化程序,包括数据存储空间初始化,设置初始密码
0000 39 ORG 00H
0000 805E 40 SJMP ST
000B 41 ORG 0BH
000B 0201D3 42 LJMP INT_T0
0060 43 ORG 060H
44
0060 754400 45 ST: MOV CNT_A,#00H ;程序初始化
0063 754500 46 MOV CNT_B,#00H
0066 754600 47 MOV KEY_CNT,#00H
0069 754700 48 MOV LINE,#00H
006C 754800 49 MOV ROW,#00H
006F 754900 50 MOV VAL,#00H
0072 D290 51 SETB P1.0
0074 753000 52 MOV LED_BIT_1,#00H ;段码存储区清0
0077 753100 53 MOV LED_BIT_2,#00H
007A 753200 54 MOV LED_BIT_3,#00H
007D 753300 55 MOV LED_BIT_4,#00H
0080 753400 56 MOV LED_BIT_5,#00H
0083 753500 57 MOV LED_BIT_6,#00H
0086 753679 58 MOV LED_BIT_7,#79H
A51 MACRO ASSEMBLER 胈码薩__煺誣薷腳 01/01/2009 09:04:32 PAGE 2
0089 753773 59 MOV LED_BIT_8,#73H
60
008C 753E00 61 MOV KEY_1,#00H ;输入密码存储区清0
008F 753F00 62 MOV KEY_2,#00H
0092 754000 63 MOV KEY_3,#00H
0095 754100 64 MOV KEY_4,#00H
0098 754200 65 MOV KEY_5,#00H
009B 754300 66 MOV KEY_6,#00H
67
009E 753806 68 MOV WORD_1,#6 ;设置初始密码为"123456"
00A1 753905 69 MOV WORD_2,#5
00A4 753A04 70 MOV WORD_3,#4
00A7 753B03 71 MOV WORD_4,#3
00AA 753C02 72 MOV WORD_5,#2
00AD 753D01 73 MOV WORD_6,#1
74
00B0 758901 75 MOV TMOD,#01H
00B3 758CFD 76 MOV TH0,#(65536-700)/256
00B6 758A44 77 MOV TL0,#(65536-700)MOD 256
00B9 75A882 78 MOV IE,#82H
79
80
81 ;***********************************************************
82 ;以下为键盘扫描程序,计算键值并存入VAL
00BC 83 LSCAN:
00BC 12023F 84 A0: LCALL DISP
00BF 75B0F0 85 MOV P3,#0F0H ;扫描行码
00C2 30B00C 86 L1: JNB P3.0,L2
00C5 120290 87 LCALL DLY_S
00C8 30B006 88 JNB P3.0,L2
00CB 754700 89 MOV LINE,#00H
00CE 0200FB 90 LJMP RSCAN
00D1 30B10C 91 L2: JNB P3.1,L3
00D4 120290 92 LCALL DLY_S
00D7 30B106 93 JNB P3.1,L3
00DA 754701 94 MOV LINE,#01H
00DD 0200FB 95 LJMP RSCAN
00E0 30B20C 96 L3: JNB P3.2,L4
00E3 120290 97 LCALL DLY_S
00E6 30B206 98 JNB P3.2,L4
00E9 754702 99 MOV LINE,#02H
00EC 0200FB 100 LJMP RSCAN
00EF 30B3CA 101 L4: JNB P3.3,A0
00F2 120290 102 LCALL DLY_S
00F5 30B3C4 103 JNB P3.3,A0
00F8 754703 104 MOV LINE,#03H
105
00FB 75B00F 106 RSCAN: MOV P3,#0FH ;扫描列码
00FE 30B406 107 C1: JNB P3.4,C2
0101 754800 108 MOV ROW,#00H
0104 020116 109 LJMP CALCU
0107 30B506 110 C2: JNB P3.5,C3
010A 754801 111 MOV ROW,#01H
010D 020116 112 LJMP CALCU
0110 30B6EB 113 C3: JNB P3.6,C1
0113 754802 114 MOV ROW,#02H
115
0116 E547 116 CALCU: MOV A,LINE ;计算键值
0118 75F003 117 MOV B,#03H
011B A4 118 MUL AB
011C 2548 119 ADD A,ROW
011E F549 120 MOV VAL,A
121 ;**************************************************
122 ;以下为按键处理程序,对不同的按键作出响应
0120 B40A25 123 CJNE A,#0AH,J1 ;是否为"CLR"键
0123 A946 124 MOV R1,KEY_CNT
A51 MACRO ASSEMBLER 胈码薩__煺誣薷腳 01/01/2009 09:04:32 PAGE 3
0125 B90006 125 CJNE R1,#00H,J2
0128 1201C4 126 LCALL ALARM_1
127
012B 0200BC 128 LJMP LSCAN
012E 12021A 129 J2: LCALL SHIFTR
0131 1546 130 DEC KEY_CNT
131
0133 12023F 132 W00:LCALL DISP ;等待按键抬起
0136 E5B0 133 MOV A,P3
0138 B40F03 134 CJNE A,#0FH,W01
013B 0200BC 135 LJMP A0
013E E5B0 136 W01:MOV A,P3
0140 B4F003 137 CJNE A,#0F0H,W02
0143 0200BC 138 LJMP A0
0146 80EB 139 W02:SJMP W00
140
0148 E549 141 J1: MOV A,VAL
014A B40B37 142 CJNE A,#0BH,J3 ;判断是否为"ENTER"键
014D A946 143 MOV R1,KEY_CNT
014F B9062C 144 CJNE R1,#06H,J4
145
0152 E538 146 MOV A,WORD_1 ;比较密码
0154 B53E21 147 CJNE A,3EH,J5
0157 E539 148 MOV A,WORD_2
0159 B53F1C 149 CJNE A,3FH,J5
015C E53A 150 MOV A,WORD_3
015E B54017 151 CJNE A,40H,J5
0161 E53B 152 MOV A,WORD_4
0163 B54112 153 CJNE A,41H,J5
0166 E53C 154 MOV A,WORD_5
0168 B5420D 155 CJNE A,42H,J5
016B E53D 156 MOV A,WORD_6
016D B54308 157 CJNE A,43H,J5
158
0170 C290 159 CLR P1.0
0172 120299 160 LCALL DLY_L
0175 0202A6 161 LJMP FINI
162
0178 1201CA 163 J5: LCALL ALARM_2
017B 0200BC 164 LJMP A0
165
017E 1201C4 166 J4: LCALL ALARM_1
0181 0200BC 167 LJMP A0
168
0184 0546 169 J3: INC KEY_CNT ;按下数字键
0186 E546 170 MOV A,KEY_CNT
0188 B4071E 171 CJNE A,#07H,K1
018B 1201C4 172 LCALL ALARM_1
173
018E 12023F 174 W10:LCALL DISP ;等待按键抬起
0191 E5B0 175 MOV A,P3
0193 B40F03 176 CJNE A,#0FH,W11
0196 0200BC 177 LJMP A0
0199 E5B0 178 W11:MOV A,P3
019B B4F003 179 CJNE A,#0F0H,W12
019E 0200BC 180 LJMP A0
01A1 80EB 181 W12:SJMP W10
01A3 0200BC 182 LJMP A0
183
01A6 0200BC 184 LJMP A0
01A9 1201F5 185 K1: LCALL SHIFTL
186
01AC 12023F 187 W20:LCALL DISP ;等待按键抬起
01AF E5B0 188 MOV A,P3
01B1 B40F03 189 CJNE A,#0FH,W21
01B4 0200BC 190 LJMP A0
A51 MACRO ASSEMBLER 胈码薩__煺誣薷腳 01/01/2009 09:04:32 PAGE 4
01B7 E5B0 191 W21:MOV A,P3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -