?? key lock (2).lst
字號:
A51 MACRO ASSEMBLER KEY_LOCK__2_ 08/05/2006 22:26:58 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN Key Lock (2).OBJ
ASSEMBLER INVOKED BY: e:\Program Files\Keil\C51\BIN\A51.EXE Key Lock (2).asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;*******************************************************
2 ;以下8個字節(jié)存放8位數(shù)碼管的段碼
0030 3 LED_BIT_1 EQU 30H
0031 4 LED_BIT_2 EQU 31H
0032 5 LED_BIT_3 EQU 32H
0033 6 LED_BIT_4 EQU 33H
0034 7 LED_BIT_5 EQU 34H
0035 8 LED_BIT_6 EQU 35H
0036 9 LED_BIT_7 EQU 36H
0037 10 LED_BIT_8 EQU 37H
11 ;以下6個字節(jié)存放初始密碼
0038 12 WORD_1 EQU 38H
0039 13 WORD_2 EQU 39H
003A 14 WORD_3 EQU 3AH
003B 15 WORD_4 EQU 3BH
003C 16 WORD_5 EQU 3CH
003D 17 WORD_6 EQU 3DH
18 ;以下6個字節(jié)存放用戶輸入的6位密碼
003E 19 KEY_1 EQU 3EH
003F 20 KEY_2 EQU 3FH
0040 21 KEY_3 EQU 40H
0041 22 KEY_4 EQU 41H
0042 23 KEY_5 EQU 42H
0043 24 KEY_6 EQU 43H
25 ;******************************************************
0044 26 CNT_A EQU 44H
0045 27 CNT_B EQU 45H
0046 28 KEY_CNT EQU 46H ;已輸出的密碼位數(shù)
0047 29 LINE EQU 47H ;按鍵行號
0048 30 ROW EQU 48H ;按鍵列號
0049 31 VAL EQU 49H ;鍵值
32 ;******************************************************
33 ;以下為初始化程序,包括數(shù)據(jù)存儲空間初始化,設(shè)置初始密碼
0000 34 ORG 00H
0000 800C 35 SJMP START
000B 36 ORG 0BH
000B 020181 37 LJMP INT_T0
000E 754400 38 START: MOV CNT_A,#00H ;程序初始化
0011 754500 39 MOV CNT_B,#00H
0014 754600 40 MOV KEY_CNT,#00H
0017 754700 41 MOV LINE,#00H
001A 754800 42 MOV ROW,#00H
001D 754900 43 MOV VAL,#00H
0020 D290 44 SETB P1.0
0022 753000 45 MOV LED_BIT_1,#00H ;段碼存儲區(qū)清0
0025 753100 46 MOV LED_BIT_2,#00H
0028 753200 47 MOV LED_BIT_3,#00H
002B 753300 48 MOV LED_BIT_4,#00H
002E 753400 49 MOV LED_BIT_5,#00H
0031 753500 50 MOV LED_BIT_6,#00H
0034 753679 51 MOV LED_BIT_7,#79H
0037 753773 52 MOV LED_BIT_8,#73H
53
003A 753E00 54 MOV KEY_1,#00H ;輸入密碼存儲區(qū)清0
003D 753F00 55 MOV KEY_2,#00H
0040 754000 56 MOV KEY_3,#00H
0043 754100 57 MOV KEY_4,#00H
0046 754200 58 MOV KEY_5,#00H
A51 MACRO ASSEMBLER KEY_LOCK__2_ 08/05/2006 22:26:58 PAGE 2
0049 754300 59 MOV KEY_6,#00H
60
004C 753806 61 MOV WORD_1,#6 ;設(shè)置初始密碼為"123456"
004F 753905 62 MOV WORD_2,#5
0052 753A04 63 MOV WORD_3,#4
0055 753B03 64 MOV WORD_4,#3
0058 753C02 65 MOV WORD_5,#2
005B 753D01 66 MOV WORD_6,#1
67
005E 758901 68 MOV TMOD,#01H
0061 758CFD 69 MOV TH0,#(65536-700)/256
0064 758A44 70 MOV TL0,#(65536-700)MOD 256
0067 75A882 71 MOV IE,#82H
72
006A 1201ED 73 A0: LCALL DISP
74 ;***********************************************************
75 ;以下為鍵盤掃描程序,計算鍵值并存入VAL
006D 75B0F0 76 LSCAN: MOV P3,#0F0H ;掃描行碼
0070 30B00C 77 L1: JNB P3.0,L2
0073 12023E 78 LCALL DLY_S
0076 30B006 79 JNB P3.0,L2
0079 754700 80 MOV LINE,#00H
007C 0200A9 81 LJMP RSCAN
007F 30B10C 82 L2: JNB P3.1,L3
0082 12023E 83 LCALL DLY_S
0085 30B106 84 JNB P3.1,L3
0088 754701 85 MOV LINE,#01H
008B 0200A9 86 LJMP RSCAN
008E 30B20C 87 L3: JNB P3.2,L4
0091 12023E 88 LCALL DLY_S
0094 30B206 89 JNB P3.2,L4
0097 754702 90 MOV LINE,#02H
009A 0200A9 91 LJMP RSCAN
009D 30B3CA 92 L4: JNB P3.3,A0
00A0 12023E 93 LCALL DLY_S
00A3 30B3C4 94 JNB P3.3,A0
00A6 754703 95 MOV LINE,#03H
96
00A9 75B00F 97 RSCAN: MOV P3,#0FH ;掃描列碼
00AC 30B406 98 C1: JNB P3.4,C2
00AF 754800 99 MOV ROW,#00H
00B2 0200C4 100 LJMP CALCU
00B5 30B506 101 C2: JNB P3.5,C3
00B8 754801 102 MOV ROW,#01H
00BB 0200C4 103 LJMP CALCU
00BE 30B6EB 104 C3: JNB P3.6,C1
00C1 754802 105 MOV ROW,#02H
106
00C4 E547 107 CALCU: MOV A,LINE ;計算鍵值
00C6 75F003 108 MOV B,#03H
00C9 A4 109 MUL AB
00CA 2548 110 ADD A,ROW
00CC F549 111 MOV VAL,A
112 ;**************************************************
113 ;以下為按鍵處理程序,對不同的按鍵作出響應(yīng)
00CE B40A25 114 CJNE A,#0AH,J1 ;是否為"CLR"鍵
00D1 A946 115 MOV R1,KEY_CNT
00D3 B90006 116 CJNE R1,#00H,J2
00D6 120172 117 LCALL ALARM_1
118
00D9 02000E 119 LJMP START
00DC 1201C8 120 J2: LCALL SHIFTR
00DF 1546 121 DEC KEY_CNT
122
00E1 1201ED 123 W00:LCALL DISP ;等待按鍵抬起
00E4 E5B0 124 MOV A,P3
A51 MACRO ASSEMBLER KEY_LOCK__2_ 08/05/2006 22:26:58 PAGE 3
00E6 B40F03 125 CJNE A,#0FH,W01
00E9 02006A 126 LJMP A0
00EC E5B0 127 W01:MOV A,P3
00EE B4F003 128 CJNE A,#0F0H,W02
00F1 02006A 129 LJMP A0
00F4 80EB 130 W02:SJMP W00
131
00F6 E549 132 J1: MOV A,VAL
00F8 B40B37 133 CJNE A,#0BH,J3 ;判斷是否為"ENTER"鍵
00FB A946 134 MOV R1,KEY_CNT
00FD B9062C 135 CJNE R1,#06H,J4
136
0100 E538 137 MOV A,WORD_1 ;比較密碼
0102 B53E21 138 CJNE A,3EH,J5
0105 E539 139 MOV A,WORD_2
0107 B53F1C 140 CJNE A,3FH,J5
010A E53A 141 MOV A,WORD_3
010C B54017 142 CJNE A,40H,J5
010F E53B 143 MOV A,WORD_4
0111 B54112 144 CJNE A,41H,J5
0114 E53C 145 MOV A,WORD_5
0116 B5420D 146 CJNE A,42H,J5
0119 E53D 147 MOV A,WORD_6
011B B54308 148 CJNE A,43H,J5
149
011E C290 150 CLR P1.0
0120 120247 151 LCALL DLY_L
0123 020254 152 LJMP FINI
153
0126 120178 154 J5: LCALL ALARM_2
0129 02000E 155 LJMP START
156
012C 120172 157 J4: LCALL ALARM_1
012F 02000E 158 LJMP START
159
0132 0546 160 J3: INC KEY_CNT ;按下數(shù)字鍵
0134 E546 161 MOV A,KEY_CNT
0136 B4071E 162 CJNE A,#07H,K1
0139 120172 163 LCALL ALARM_1
164
013C 1201ED 165 W10:LCALL DISP ;等待按鍵抬起
013F E5B0 166 MOV A,P3
0141 B40F03 167 CJNE A,#0FH,W11
0144 02000E 168 LJMP START
0147 E5B0 169 W11:MOV A,P3
0149 B4F003 170 CJNE A,#0F0H,W12
014C 02000E 171 LJMP START
014F 80EB 172 W12:SJMP W10
0151 02000E 173 LJMP START
174
0154 02000E 175 LJMP START
0157 1201A3 176 K1: LCALL SHIFTL
177
015A 1201ED 178 W20:LCALL DISP ;等待按鍵抬起
015D E5B0 179 MOV A,P3
015F B40F03 180 CJNE A,#0FH,W21
0162 02006A 181 LJMP A0
0165 E5B0 182 W21:MOV A,P3
0167 B4F003 183 CJNE A,#0F0H,W22
016A 02006A 184 LJMP A0
016D 80EB 185 W22:SJMP W20
016F 02006A 186 LJMP A0
187
0172 D28C 188 ALARM_1:SETB TR0 ;操作錯誤報警
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -