📄 key.lst
字号:
310: 0216 74 45 MOV A,#'E'
311: 0218 12 02 DC LCALL WRITE_TEXT
312: 021B 74 4E MOV A,#'N'
313: 021D 12 02 DC LCALL WRITE_TEXT
314: 0220 74 54 MOV A,#'T'
315: 0222 12 02 DC LCALL WRITE_TEXT
316: 0225 74 45 MOV A,#'E'
317: 0227 12 02 DC LCALL WRITE_TEXT
318: 022A 74 52 MOV A,#'R'
319: 022C 12 02 DC LCALL WRITE_TEXT
320: 022F 74 20 MOV A,#' '
321: 0231 12 02 DC LCALL WRITE_TEXT
322: 0234 74 20 MOV A,#' '
323: 0236 12 02 DC LCALL WRITE_TEXT
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 7
Line I Addr Code Source
324: 0239 74 43 MOV A,#'C'
325: 023B 12 02 DC LCALL WRITE_TEXT
326: 023E 74 4F MOV A,#'O'
327: 0240 12 02 DC LCALL WRITE_TEXT
328: 0243 74 44 MOV A,#'D'
329: 0245 12 02 DC LCALL WRITE_TEXT
330: 0248 74 45 MOV A,#'E'
331: 024A 12 02 DC LCALL WRITE_TEXT
332: 024D 74 20 MOV A,#' '
333: 024F 12 02 DC LCALL WRITE_TEXT
334: 0252 74 3A MOV A,#':'
335: 0254 12 02 DC LCALL WRITE_TEXT
336: 0257 74 20 MOV A,#' '
337: 0259 12 02 DC LCALL WRITE_TEXT
338:
339: 025C C2 B1 CLR RS ;PUT CURSOR AT THE STARTING OF THE SECOND LINE
340: 025E 75 90 C0 MOV TEXT,#0C0h
341: 0261 D2 B0 SETB EN
342: 0263 C2 B0 CLR EN
343: 0265 12 02 C7 LCALL WAIT_LCD
344:
345: 0268 74 2A MOV A,#'*'
346: 026A 12 02 DC LCALL WRITE_TEXT
347: 026D 74 2A MOV A,#'*'
348: 026F 12 02 DC LCALL WRITE_TEXT
349: 0272 74 2A MOV A,#'*'
350: 0274 12 02 DC LCALL WRITE_TEXT
351: 0277 74 2A MOV A,#'*'
352: 0279 12 02 DC LCALL WRITE_TEXT
353: ;CLR RS ;PUT CURSOR AT THE STARTING OF THE SECOND LINE
354: ;MOV TEXT,#0CAh
355: ;SETB EN
356: ;CLR EN
357: ;LCALL WAIT_LCD
358:
359: 027C 22 RET
360:
361: ;CJNE R0,#4H,LOOP
362: ;ACALL CHECK
363:
364: 027D 7C 2E DELAY_3:MOV R4,#46
365: ;MOV R4,#5 ;This statement is for test only.Correct statement is the previous one.
366: 027F 51 82 ACALL DELAY_
367: 0281 22 RET
368:
369: 0282 75 89 01 DELAY_ :MOV TMOD,#01H
370: 0285 75 8A 00 MOV TL0,#0H
371: 0288 75 8C 00 MOV TH0,#0H
372: 028B D2 8C SETB TR0
373: 028D C2 8D CLR TF0
374: 028F 30 8D FD JNB TF0,$
375: 0292 DC EE DJNZ R4,DELAY_
376: 0294 22 RET
377:
378: 0295 C2 B1 INIT_LCD: CLR RS
379: 0297 75 90 38 MOV TEXT,#38h
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 8
Line I Addr Code Source
380: 029A D2 B0 SETB EN
381: 029C C2 B0 CLR EN
382: 029E 12 02 C7 LCALL WAIT_LCD
383: 02A1 C2 B1 CLR RS
384: 02A3 75 90 0E MOV TEXT,#0Eh
385: 02A6 D2 B0 SETB EN
386: 02A8 C2 B0 CLR EN
387: 02AA 12 02 C7 LCALL WAIT_LCD
388: 02AD C2 B1 CLR RS
389: 02AF 75 90 06 MOV TEXT,#06h
390: 02B2 D2 B0 SETB EN
391: 02B4 C2 B0 CLR EN
392: 02B6 12 02 C7 LCALL WAIT_LCD
393: 02B9 22 RET
394:
395: 02BA C2 B1 CLEAR_LCD:CLR RS
396: 02BC 75 90 01 MOV TEXT,#01h
397: 02BF D2 B0 SETB EN
398: 02C1 C2 B0 CLR EN
399: 02C3 12 02 C7 LCALL WAIT_LCD
400: 02C6 22 RET
401:
402: 02C7 C2 B0 WAIT_LCD:CLR EN ;Start LCD command
403: 02C9 C2 B1 CLR RS ;It's a command
404: 02CB D2 B2 SETB RW ;It's a read command
405: 02CD 75 90 FF MOV TEXT,#0FFh ;Set all pins to FF initially
406: 02D0 D2 B0 SETB EN ;Clock out command to LCD
407: 02D2 E5 90 MOV A,TEXT ;Read the return value
408: ;CLR ACC.7 ;TEST Statement Remove for main prog.
409: 02D4 20 E7 F0 JB ACC.7,WAIT_LCD ;If bit 7 high, LCD still busy
410: 02D7 C2 B0 CLR EN ;Finish the command
411: 02D9 C2 B2 CLR RW ;Turn off RW for future commands
412: 02DB 22 RET
413:
414: 02DC D2 B1 WRITE_TEXT:SETB RS
415: 02DE F5 90 MOV TEXT,A
416: 02E0 D2 B0 SETB EN
417: 02E2 C2 B0 CLR EN
418: 02E4 12 02 C7 LCALL WAIT_LCD
419: 02E7 22 RET
420:
421: 02E8 C2 81 KEY: CLR P0.1
422: ;CLR P0.0
423: 02EA 7F 32 MOV R7,#50 ;It should be 50 instead of 2 in real program.
424: 02EC 51 EF ACALL SCANKEYPAD
425: 02EE 22 RET
426:
427: 02EF 78 7F SCANKEYPAD:MOV R0,#07FH
428: 02F1 7C 00 MOV R4,#0H
429: ;MOV R6,R0
430: 02F3 D2 81 SETB P0.1
431:
432: 02F5 D2 81 SCAN:SETB P0.1
433: 02F7 E8 MOV A,R0
434: 02F8 23 RL A
435: 02F9 AA A0 MOV R2,P2
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 9
Line I Addr Code Source
436: 02FB AD A0 MOV R5,P2
437: 02FD F8 MOV R0,A
438: 02FE 5D ANL A,R5
439: 02FF C2 D7 CLR CY
440: 0301 9D SUBB A,R5
441: 0302 60 07 JZ DEBOUNCE
442: 0304 0C INC R4
443: 0305 BC 04 ED CJNE R4,#4,SCAN
444: 0308 71 2D ACALL NOKEYPRESSED
445: 030A 22 RET
446:
447: 030B 1F DEBOUNCE:DEC R7
448: 030C BF 31 0A CJNE R7,#49,CHK ;It should be 49 instead of 1 for real prog.
449: 030F D2 80 SETB P0.0
450: 0311 0F INC R7
451: 0312 ED MOV A,R5
452: 0313 FE MOV R6,A
453: 0314 DF D9 DJNZ R7,SCANKEYPAD
454: 0316 71 28 ACALL KEYPRESSED
455: 0318 22 RET
456:
457: 0319 EE CHK: MOV A,R6
458: 031A C2 D7 CLR cy
459: 031C 9A SUBB A,R2
460: 031D 60 03 JZ SCANKEY
461: 031F 71 2D ACALL NOKEYPRESSED
462: 0321 22 RET
463:
464: 0322 0F SCANKEY:INC R7
465: 0323 DF CA DJNZ R7,SCANKEYPAD
466: 0325 71 28 ACALL KEYPRESSED
467: 0327 22 RET
468:
469: 0328 KEYPRESSED:;MOV P2,R5
470: 0328 C2 81 CLR P0.1
471: 032A 71 33 ACALL EXIT1
472: 032C 22 RET
473:
474: 032D 00 NOKEYPRESSED:NOP
475: 032E C2 82 CLR P0.2
476: 0330 71 33 ACALL EXIT1
477: 0332 22 RET
478:
479: 0333 00 EXIT1:NOP
480: ;ACALL GOT0
481: 0334 22 RET
482:
483: 0335 00 EXIT:NOP
484: 0336 12 02 95 LCALL INIT_LCD
485: 0339 12 02 BA LCALL CLEAR_LCD
486: 033C 74 45 MOV A,#'E'
487: 033E 12 02 DC LCALL WRITE_TEXT
488: 0341 74 4E MOV A,#'N'
489: 0343 12 02 DC LCALL WRITE_TEXT
490: 0346 74 44 MOV A,#'D'
491: END
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 10
register banks used: ---
no errors
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 11
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
??ASEM_51 NUMBER 8051
??VERSION NUMBER 0130
AC BIT D6
ACC DATA E0
B DATA F0
CHECK CODE 00DA 170
CHK CODE 0319 457
CLEAR_LCD CODE 02BA 395
CORRECT CODE 00DF 173
CY BIT D7
DB0 NUMBER 0090 10
DB1 NUMBER 0091 11
DB2 NUMBER 0092 12
DB3 NUMBER 0093 13
DB4 NUMBER 0094 14
DB5 NUMBER 0095 15
DB6 NUMBER 0096 16
DB7 NUMBER 0097 17
DEBOUNCE CODE 030B 447
DELAY_ CODE 0282 369
DELAY_3 CODE 027D 364
DISPLAY1 CODE 0056 83
DISPLAY2 CODE 007A 106
DISPLAY22 CODE 0073 100
DISPLAY3 CODE 009C 130
DISPLAY33 CODE 0095 124
DISPLAY4 CODE 00BE 153
DISPLAY44 CODE 00B7 147
DISPLAY55 CODE 00D6 167
DPH DATA 83
DPL DATA 82
EA BIT AF
EN NUMBER 00B0 18
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXIT CODE 0335 483
EXIT1 CODE 0333 479
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
GOTO CODE 002C 44
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INIT_LCD CODE 0295 378
INT0 BIT B2
INT1 BIT B3
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 12
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
KEY CODE 02E8 421
KEYPRESSED CODE 0328 469
KEY_DISPLAY CODE 0039 54
LCD_DISPLAY CODE 0210 308
LCD_START CODE 01C8 277
LOOP1 CODE 0028 41
LOOP_START CODE 001D 35
MAIN CODE 0000 9
NOKEYPRESSED CODE 032D 474
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS NUMBER 00B1 19
RS0 BIT D3
RS1 BIT D4
RW NUMBER 00B2 20
RXD BIT B0
SBUF DATA 99
SCAN CODE 02F5 432
SCANKEY CODE 0322 464
SCANKEYPAD CODE 02EF 427
SCON DATA 98
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
T0 BIT B4
T1 BIT B5
TB8 BIT 9B
TCON DATA 88
TEXT NUMBER 0090 21
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 13
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
WAIT_LCD CODE 02C7 402
WR BIT B6
WRITE_TEXT CODE 02DC 414
WRONG CODE 0172 238
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -