📄 key.lst
字号:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 1
MCS-51 Family Cross Assembler A S E M - 5 1 V 1.2
=====================================================
Source File: KEY.ASM
Object File: KEY.HEX
List File: KEY.LST
Line I Addr Code Source
1: N 0030 KEYBUF EQU 30H
2: N 0000 ORG 0
3: 0000 02 00 30 LJMP START
4: N 0003 ORG 3
5: 0003 02 00 6F LJMP KEYSCAN
6: N 0030 ORG 30H
7: 0030 75 81 60 START: MOV SP,#60H
8: 0033 D2 88 SETB IT0
9: 0035 D2 A8 SETB EX0
10: 0037 75 90 0F MOV P1,#0FH
11: 003A D2 AF SETB EA
12: 003C 75 30 47 MOV KEYBUF,#47H ;将“G”送显示缓冲区,以便熄灭显示器
13: 003F 12 00 44 LOOP: LCALL DISP
14: 0042 80 FB SJMP LOOP
15: ;显示程序
16: ;将KEYBUF单元的ASCII码送数码管显示
17: ;可以显示的ASCII码数据0-9,A-F。若ASCII码为“G”(47H)则显示熄灭
18: 0044 E5 30 DISP: MOV A,KEYBUF
19: 0046 C3 CLR C
20: 0047 94 3A SUBB A,#3AH
21: 0049 40 06 JC DISP1
22: 004B E5 30 MOV A,KEYBUF
23: 004D 94 37 SUBB A,#37H
24: 004F 80 04 SJMP DISP2
25: 0051 E5 30 DISP1: MOV A,KEYBUF
26: 0053 54 0F ANL A,#0FH
27: 0055 90 00 5E DISP2: MOV DPTR,#DISP_TAB
28: 0058 93 MOVC A,@A+DPTR
29: 0059 54 7F ANL A,#7FH
30: 005B F5 80 MOV P0,A
31: 005D 22 RET
32: 005E C0 F9 A4 B0 DISP_TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
0062 99 92 82 F8
33: 0066 80 90 88 83 DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
006A C6 A1 86 8E
006E FF
34: ;键盘扫描程序
35: ;键码存在KEYBUF单元,格式为ASCII码
36: 006F C0 D0 KEYSCAN:PUSH PSW
37: 0071 C0 E0 PUSH ACC
38: 0073 C0 83 PUSH DPH
39: 0075 C0 82 PUSH DPL
40: 0077 C2 D4 CLR RS1
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
41: 0079 D2 D3 SETB RS0 ;选择1区工作寄存器
42: 007B 12 01 00 LCALL DELAY
43: 007E E5 90 MOV A,P1
44: 0080 F4 CPL A
45: 0081 54 0F ANL A,#0FH
46: 0083 60 4B JZ FINISH
47: 0085 90 00 DC MOV DPTR,#TAB
48: 0088 75 90 EF MOV P1,#0EFH ;扫描第一行
49: 008B 75 90 EF MOV P1,#0EFH
50: 008E E5 90 MOV A,P1
51: 0090 F4 CPL A
52: 0091 54 0F ANL A,#0FH
53: 0093 60 02 JZ K1 ;第一行没键按下,则扫描第二行
54: 0095 80 31 SJMP KEND
55: 0097 75 90 DF K1: MOV P1,#0DFH ;扫描第二行
56: 009A 75 90 DF MOV P1,#0DFH
57: 009D E5 90 MOV A,P1
58: 009F F4 CPL A
59: 00A0 54 0F ANL A,#0FH
60: 00A2 60 04 JZ K2 ;第二行没键按下,则扫描第三行
61: 00A4 24 09 ADD A,#9
62: 00A6 80 20 SJMP KEND
63: 00A8 75 90 BF K2: MOV P1,#0BFH ;扫描第三行
64: 00AB 75 90 BF MOV P1,#0BFH
65: 00AE E5 90 MOV A,P1
66: 00B0 F4 CPL A
67: 00B1 54 0F ANL A,#0FH
68: 00B3 60 04 JZ K3
69: 00B5 24 12 ADD A,#18
70: 00B7 80 0F SJMP KEND
71: 00B9 75 90 7F K3: MOV P1,#7FH
72: 00BC 75 90 7F MOV P1,#7FH
73: 00BF E5 90 MOV A,P1
74: 00C1 F4 CPL A
75: 00C2 54 0F ANL A,#0FH
76: 00C4 60 07 JZ K4
77: 00C6 24 1B ADD A,#27
78: 00C8 93 KEND: MOVC A,@A+DPTR
79: 00C9 F5 30 MOV KEYBUF,A
80: 00CB 80 03 SJMP FINISH
81: 00CD 75 30 47 K4: MOV KEYBUF,#47H ;'G'送键盘缓冲区,以便将显示器熄灭
82: 00D0 75 90 0F FINISH: MOV P1,#0FH ;为下一次扫描作准备
83: 00D3 D0 82 POP DPL
84: 00D5 D0 83 POP DPH
85: 00D7 D0 E0 POP ACC
86: 00D9 D0 D0 POP PSW
87: 00DB 32 RETI
88: 00DC 00 30 31 00 TAB: DB 00H,30H,31H,00H,32H,00H,00H,00H,33H
00E0 32 00 00 00
00E4 33
89: 00E5 00 34 35 00 DB 00H,34H,35H,00H,36H,00H,00H,00H,37H
00E9 36 00 00 00
00ED 37
90: 00EE 00 38 39 00 DB 00H,38H,39H,00H,41H,00H,00H,00H,42H
00F2 41 00 00 00
00F6 42
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
91: 00F7 00 43 44 00 DB 00H,43H,44H,00H,45H,00H,00H,00H,46H
00FB 45 00 00 00
00FF 46
92: 0100 7E 14 DELAY: MOV R6,#20
93: 0102 7F FA L1: MOV R7,#250
94: 0104 00 L2: NOP
95: 0105 00 NOP
96: 0106 DF FC DJNZ R7,L2
97: 0108 DE F8 DJNZ R6,L1
98: 010A 22 RET
99: END
100:
register banks used: ---
no errors
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
AC BIT D6
ACC DATA E0
B DATA F0
CY BIT D7
DELAY CODE 0100 92
DISP CODE 0044 18
DISP1 CODE 0051 25
DISP2 CODE 0055 27
DISP_TAB CODE 005E 32
DPH DATA 83
DPL DATA 82
EA BIT AF
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
FINISH CODE 00D0 82
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
K1 CODE 0097 55
K2 CODE 00A8 63
K3 CODE 00B9 71
K4 CODE 00CD 81
KEND CODE 00C8 78
KEYBUF NUMBER 0030 1
KEYSCAN CODE 006F 36
L1 CODE 0102 93
L2 CODE 0104 94
LOOP CODE 003F 13
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
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
START CODE 0030 7
T0 BIT B4
T1 BIT B5
TAB CODE 00DC 88
TB8 BIT 9B
TCON DATA 88
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -