📄 key.lst
字号:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
=====================================================
Source File: E:\MiCrOConTroller\Coba_M-IDE\KEYDOOR\KEY.asm
Object File: E:\MiCrOConTroller\Coba_M-IDE\KEYDOOR\KEY.hex
List File: E:\MiCrOConTroller\Coba_M-IDE\KEYDOOR\KEY.lst
Line I Addr Code Source
1: ;This is "THE DIGITAL CODE LOCK" Program which takes a 4-digit password
2: ;from the user and compares it with the already saved password.
3: ;If the password entered is correct then the LED GLOWS!!!!
4: ;$ THE DOOR OPENS!!!!
5: ;Otherwise if the password entered is incorrect then the message - "INCORRECT CODE"
6: ;is displayed on the screen of the LCD.
7: ;PIN P0.7 an LED is attached which glows as the lock opens!!!
8:
9: 0000 C2 86 MAIN : CLR P0.6
10: B 0090 DB0 EQU P1.0
11: B 0091 DB1 EQU P1.1
12: B 0092 DB2 EQU P1.2
13: B 0093 DB3 EQU P1.3
14: B 0094 DB4 EQU P1.4
15: B 0095 DB5 EQU P1.5
16: B 0096 DB6 EQU P1.6
17: B 0097 DB7 EQU P1.7
18: B 00B0 EN EQU P3.0
19: B 00B1 RS EQU P3.1
20: B 00B2 RW EQU P3.2
21: D 0090 TEXT EQU P1
22: 0002 31 C8 ACALL LCD_START
23: 0004 51 7D ACALL DELAY_3
24: 0006 51 10 ACALL LCD_DISPLAY
25: 0008 51 7D ACALL DELAY_3
26: 000A 79 00 MOV R1,#0H
27: 000C 7B 2E MOV R3,#46 ;Use 46 instead of 2 in real program.
28: 000E 75 89 10 MOV TMOD,#10H
29: 0011 75 8B 00 MOV TL1,#0H
30: 0014 75 8D 00 MOV TH1,#0H
31: 0017 D2 8E SETB TR1
32: 0019 C2 8F CLR TF1
33: 001B 11 1D ACALL LOOP_START
34:
35: 001D 1B LOOP_START:DEC R3
36: 001E 75 8B 00 MOV TL1,#0H
37: 0021 75 8D 00 MOV TH1,#0H
38: 0024 D2 8E SETB TR1
39: 0026 C2 8F CLR TF1
40:
41: 0028 51 E8 LOOP1: ACALL KEY ;Store value of digit at R1
42: 002A 80 00 SJMP GOTO
43:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 002C 30 81 0A GOTO : JNB P0.1,KEY_DISPLAY
45:
46: 002F 30 8F F6 JNB TF1,LOOP1
47: 0032 C2 8F CLR TF1
48: ;SET TRO
49: ;CALL LOOP_START
50: 0034 0B INC R3
51: 0035 DB E6 DJNZ R3,LOOP_START
52: 0037 71 35 ACALL EXIT
53:
54: 0039 09 KEY_DISPLAY:INC R1
55: 003A 74 01 MOV A,#1
56: 003C C2 D7 CLR CY
57: 003E 99 SUBB A,R1
58: 003F 60 15 JZ DISPLAY1
59: ;MOV R2,#46
60: ;ACALL LOOP_START
61:
62: 0041 74 02 MOV A,#2
63: 0043 C2 D7 CLR CY
64: 0045 99 SUBB A,R1
65: 0046 60 32 JZ DISPLAY2
66: ;MOV R2,#46
67: ;ACALL LOOP_START
68:
69: 0048 74 03 MOV A,#3
70: 004A C2 D7 CLR CY
71: 004C 99 SUBB A,R1
72: 004D 60 4D JZ DISPLAY3
73: ;MOV R2,#46
74: ;ACALL LOOP_START
75:
76: 004F 74 04 MOV A,#4
77: 0051 C2 D7 CLR CY
78: 0053 99 SUBB A,R1
79: 0054 60 68 JZ DISPLAY4
80:
81: ;ACALL EXIT Control of EXIT is done by DISPLAY$
82:
83: 0056 C2 86 DISPLAY1:CLR P0.6
84: 0058 12 02 95 LCALL INIT_LCD
85: 005B C2 B1 CLR RS ;PUT CURSOR AT THE STARTING OF THE SECOND LINE
86: 005D 75 90 C0 MOV TEXT,#0C0h
87: 0060 D2 B0 SETB EN
88: 0062 C2 B0 CLR EN
89: 0064 12 02 C7 LCALL WAIT_LCD
90: 0067 EE MOV A,R6
91: 0068 12 02 DC LCALL WRITE_TEXT
92: 006B BE EE 05 CJNE R6,#0EEH,DISPLAY22
93: ;JNB P0.6,GOTO1
94: 006E 7B 2E MOV R3,#46 ;Use 46 instead of 2 in real program.
95: 0070 11 1D ACALL LOOP_START
96: ;RET
97: ;GOTO1: CLR P0.6;ACALL LOOP
98: 0072 22 RET
99:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 0073 D2 86 DISPLAY22:SETB P0.6 ;To check if digit entered is wrong
101: ;ACALL LOOP
102: 0075 7B 2E MOV R3,#46 ;Use 46 instead of 2 in real program.
103: 0077 11 1D ACALL LOOP_START
104: 0079 22 RET
105:
106: 007A DISPLAY2:;MOV DPTR,
107: 007A 12 02 95 LCALL INIT_LCD
108: 007D C2 B1 CLR RS ;PUT CURSOR AT THE STARTING OF THE SECOND LINE
109: 007F 75 90 C1 MOV TEXT,#0C1h
110: 0082 D2 B0 SETB EN
111: 0084 C2 B0 CLR EN
112: 0086 12 02 C7 LCALL WAIT_LCD
113: 0089 EE MOV A,R6
114: 008A 12 02 DC LCALL WRITE_TEXT
115: 008D BE EE 05 CJNE R6,#0EEH,DISPLAY33
116: ;ACALL LOOP
117: ;JNB P0.6,GOTO2
118: 0090 7B 2E MOV R3,#46 ;Use 46 instead of 2 in real program.
119: 0092 11 1D ACALL LOOP_START
120: ;RET
121: ;GOTO2: CLR P0.6
122: 0094 22 RET
123:
124: 0095 D2 86 DISPLAY33:SETB P0.6
125: 0097 7B 2E MOV R3,#46 ;Use 46 instead of 2 in real program.
126: 0099 11 1D ACALL LOOP_START
127: ;ACALL LOOP
128: 009B 22 RET
129:
130: 009C 12 02 95 DISPLAY3:LCALL INIT_LCD
131: 009F C2 B1 CLR RS ;PUT CURSOR AT THE STARTING OF THE SECOND LINE
132: 00A1 75 90 C2 MOV TEXT,#0C2h
133: 00A4 D2 B0 SETB EN
134: 00A6 C2 B0 CLR EN
135: 00A8 12 02 C7 LCALL WAIT_LCD
136: 00AB EE MOV A,R6
137: 00AC 12 02 DC LCALL WRITE_TEXT
138: 00AF BE EE 05 CJNE R6,#0EEH,DISPLAY44
139: ;ACALL LOOP
140: ;JNB P0.6,GOTO3
141: 00B2 7B 2E MOV R3,#46 ;Use 46 instead of 2 in real program.
142: 00B4 11 1D ACALL LOOP_START
143: 00B6 22 RET
144: ;GOTO3: CLR P0.6
145: ; RET
146:
147: 00B7 D2 86 DISPLAY44:SETB P0.6
148: 00B9 7B 2E MOV R3,#46 ;Use 46 instead of 2 in real program.
149: 00BB 11 1D ACALL LOOP_START
150: ;ACALL LOOP
151: 00BD 22 RET
152:
153: 00BE 12 02 95 DISPLAY4:LCALL INIT_LCD
154: 00C1 C2 B1 CLR RS ;PUT CURSOR AT THE STARTING OF THE SECOND LINE
155: 00C3 75 90 C3 MOV TEXT,#0C3h
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 4
Line I Addr Code Source
156: 00C6 D2 B0 SETB EN
157: 00C8 C2 B0 CLR EN
158: 00CA 12 02 C7 LCALL WAIT_LCD
159: 00CD EE MOV A,R6
160: 00CE 12 02 DC LCALL WRITE_TEXT
161: 00D1 BE EE 02 CJNE R6,#0EEH,DISPLAY55
162: ;JNB P0.6,GOTO4
163: ;RET
164: ;GOTO4: CLR P0.6
165: 00D4 11 DA ACALL CHECK
166:
167: 00D6 D2 86 DISPLAY55:SETB P0.6
168: 00D8 11 DA ACALL CHECK
169:
170: 00DA 30 86 02 CHECK:JNB P0.6,CORRECT
171: 00DD 31 72 ACALL WRONG
172:
173: 00DF C2 87 CORRECT:CLR P0.7 ;CODE ENTERED ISCORRECT ....LED GLOWS....LOCK OPENS
174: 00E1 12 02 95 LCALL INIT_LCD
175: 00E4 12 02 BA LCALL CLEAR_LCD
176:
177: 00E7 74 43 MOV A,#'C'
178: 00E9 12 02 DC LCALL WRITE_TEXT
179: 00EC 74 4F MOV A,#'O'
180: 00EE 12 02 DC LCALL WRITE_TEXT
181: 00F1 74 52 MOV A,#'R'
182: 00F3 12 02 DC LCALL WRITE_TEXT
183: 00F6 74 52 MOV A,#'R'
184: 00F8 12 02 DC LCALL WRITE_TEXT
185: 00FB 74 45 MOV A,#'E'
186: 00FD 12 02 DC LCALL WRITE_TEXT
187: 0100 74 43 MOV A,#'C'
188: 0102 12 02 DC LCALL WRITE_TEXT
189: 0105 74 54 MOV A,#'T'
190: 0107 12 02 DC LCALL WRITE_TEXT
191: 010A 74 20 MOV A,#' '
192: 010C 12 02 DC LCALL WRITE_TEXT
193: 010F 74 20 MOV A,#' '
194: 0111 12 02 DC LCALL WRITE_TEXT
195: 0114 74 43 MOV A,#'C'
196: 0116 12 02 DC LCALL WRITE_TEXT
197: 0119 74 4F MOV A,#'O'
198: 011B 12 02 DC LCALL WRITE_TEXT
199: 011E 74 44 MOV A,#'D'
200: 0120 12 02 DC LCALL WRITE_TEXT
201: 0123 74 45 MOV A,#'E'
202: 0125 12 02 DC LCALL WRITE_TEXT
203:
204: 0128 C2 B1 CLR RS ;PUT CURSOR AT THE STARTING OF THE SECOND LINE
205: 012A 75 90 C0 MOV TEXT,#0C0h
206: 012D D2 B0 SETB EN
207: 012F C2 B0 CLR EN
208: 0131 12 02 C7 LCALL WAIT_LCD
209:
210: 0134 12 02 95 LCALL INIT_LCD
211: 0137 74 44 MOV A,#'D'
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 5
Line I Addr Code Source
212: 0139 12 02 DC LCALL WRITE_TEXT
213: 013C 74 4F MOV A,#'O'
214: 013E 12 02 DC LCALL WRITE_TEXT
215: 0141 74 4F MOV A,#'O'
216: 0143 12 02 DC LCALL WRITE_TEXT
217: 0146 74 52 MOV A,#'R'
218: 0148 12 02 DC LCALL WRITE_TEXT
219: 014B 74 20 MOV A,#' '
220: 014D 12 02 DC LCALL WRITE_TEXT
221: 0150 74 20 MOV A,#' '
222: 0152 12 02 DC LCALL WRITE_TEXT
223: 0155 74 4F MOV A,#'O'
224: 0157 12 02 DC LCALL WRITE_TEXT
225: 015A 74 50 MOV A,#'P'
226: 015C 12 02 DC LCALL WRITE_TEXT
227: 015F 74 45 MOV A,#'E'
228: 0161 12 02 DC LCALL WRITE_TEXT
229: 0164 74 4E MOV A,#'N'
230: 0166 12 02 DC LCALL WRITE_TEXT
231: 0169 74 53 MOV A,#'S'
232: 016B 12 02 DC LCALL WRITE_TEXT
233:
234: 016E 51 7D ACALL DELAY_3
235:
236: 0170 71 35 ACALL EXIT
237:
238: 0172 WRONG:;Code entered is incorrest
239: 0172 12 02 95 LCALL INIT_LCD
240: 0175 12 02 BA LCALL CLEAR_LCD
241: 0178 74 49 MOV A,#'I'
242: 017A 12 02 DC LCALL WRITE_TEXT
243: 017D 74 4E MOV A,#'N'
244: 017F 12 02 DC LCALL WRITE_TEXT
245: 0182 74 43 MOV A,#'C'
246: 0184 12 02 DC LCALL WRITE_TEXT
247: 0187 74 4F MOV A,#'O'
248: 0189 12 02 DC LCALL WRITE_TEXT
249: 018C 74 52 MOV A,#'R'
250: 018E 12 02 DC LCALL WRITE_TEXT
251: 0191 74 52 MOV A,#'R'
252: 0193 12 02 DC LCALL WRITE_TEXT
253: 0196 74 45 MOV A,#'E'
254: 0198 12 02 DC LCALL WRITE_TEXT
255: 019B 74 43 MOV A,#'C'
256: 019D 12 02 DC LCALL WRITE_TEXT
257: 01A0 74 54 MOV A,#'T'
258: 01A2 12 02 DC LCALL WRITE_TEXT
259: 01A5 74 20 MOV A,#' '
260: 01A7 12 02 DC LCALL WRITE_TEXT
261: 01AA 74 20 MOV A,#' '
262: 01AC 12 02 DC LCALL WRITE_TEXT
263: 01AF 74 43 MOV A,#'C'
264: 01B1 12 02 DC LCALL WRITE_TEXT
265: 01B4 74 4F MOV A,#'O'
266: 01B6 12 02 DC LCALL WRITE_TEXT
267: 01B9 74 44 MOV A,#'D'
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 6
Line I Addr Code Source
268: 01BB 12 02 DC LCALL WRITE_TEXT
269: 01BE 74 45 MOV A,#'E'
270: 01C0 12 02 DC LCALL WRITE_TEXT
271:
272: 01C3 51 7D ACALL DELAY_3
273:
274: 01C5 71 35 ACALL EXIT
275: 01C7 22 RET
276:
277: 01C8 12 02 95 LCD_START:LCALL INIT_LCD
278: 01CB 12 02 BA LCALL CLEAR_LCD
279: 01CE 74 44 MOV A,#'D'
280: 01D0 12 02 DC LCALL WRITE_TEXT
281: 01D3 74 49 MOV A,#'I'
282: 01D5 12 02 DC LCALL WRITE_TEXT
283: 01D8 74 47 MOV A,#'G'
284: 01DA 12 02 DC LCALL WRITE_TEXT
285: 01DD 74 49 MOV A,#'I'
286: 01DF 12 02 DC LCALL WRITE_TEXT
287: 01E2 74 54 MOV A,#'T'
288: 01E4 12 02 DC LCALL WRITE_TEXT
289: 01E7 74 41 MOV A,#'A'
290: 01E9 12 02 DC LCALL WRITE_TEXT
291: 01EC 74 4C MOV A,#'L'
292: 01EE 12 02 DC LCALL WRITE_TEXT
293: 01F1 74 20 MOV A,#' '
294: 01F3 12 02 DC LCALL WRITE_TEXT
295: 01F6 74 20 MOV A,#' '
296: 01F8 12 02 DC LCALL WRITE_TEXT
297: 01FB 74 4C MOV A,#'L'
298: 01FD 12 02 DC LCALL WRITE_TEXT
299: 0200 74 4F MOV A,#'O'
300: 0202 12 02 DC LCALL WRITE_TEXT
301: 0205 74 43 MOV A,#'C'
302: 0207 12 02 DC LCALL WRITE_TEXT
303: 020A 74 4B MOV A,#'K'
304: 020C 12 02 DC LCALL WRITE_TEXT
305: 020F 22 RET
306:
307:
308: 0210 12 02 95 LCD_DISPLAY:LCALL INIT_LCD
309: 0213 12 02 BA LCALL CLEAR_LCD
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -