📄 4.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: 4.ASM
Object File: 4.HEX
List File: 4.LST
Line I Addr Code Source
1: N 0000 ORG 0h
2: 0000 01 30 AJMP START
3: N 0030 ORG 30h
4: 0030 75 90 BF START: MOV P1,#10111111B
5: 0033 75 A0 FF SCANK: MOV P2,#0FFH
6: 0036 C2 A3 CLR P2.3 ;P2.3清0,扫描第1行
7: 0038 E5 A0 MOV A,P2 ;读键盘至A
8: 003A 54 07 ANL A,#00000111B
9: 003C 64 07 XRL A,#00000111B;判断A的低三位是否为1
10: 003E 60 21 JZ SCANL2 ;如果低三位为1,则无按键,转第二行扫描 LCALL DELAY10MS;延时10ms(去抖延时)
11: 0040 E5 A0 MOV A,P2 ;读键盘至A
12: 0042 54 07 ANL A,#00000111B
13: 0044 64 07 XRL A,#00000111B;判断A的低三位是否为1
14: 0046 60 19 JZ SCANL2 ;如果低三位为1,则无按键,转第二行扫描
15: 0048 E5 A0 MOV A,P2 ;读键盘至A
16: 004A 54 07 ANL A,#00000111B;保留低三位的结果
17: 004C B4 06 05 CJNE A,#00000110B,NOK0;不是K0键,转NOK0
18: 004F 74 00 MOV A,#0 ;是K0键将A赋值为0
19: 0051 02 00 CC LJMP DISPLAY ;转显示子程序
20: 0054 B4 05 05 NOK0: CJNE A,#00000101B,NOK1;不是K1键,转NOK1
21: 0057 74 01 MOV A,#1 ;是K1键将A赋值为1
22: 0059 02 00 CC LJMP DISPLAY ;转显示子程序
23: 005C 74 02 NOK1: MOV A,#2 ; 不是K0、K1,则一定是K2。将A赋值为2
24: 005E 02 00 CC LJMP DISPLAY
25: 0061 75 A0 FF SCANL2 :MOV P2,#0FFH
26: 0064 C2 A4 CLR P2.4 ;P2.4清0,扫描第2行
27: 0066 E5 A0 MOV A,P2 ;读键盘至A
28: 0068 54 07 ANL A,#00000111B
29: 006A 64 07 XRL A,#00000111B;判断A的低三位是否为1
30: 006C 60 21 JZ SCANL3 ;如果低三位为1,则无按键,转第三行扫描 LCALL DELAY10MS;延时10ms(去抖延时)
31: 006E E5 A0 MOV A,P2 ;读键盘至A
32: 0070 54 07 ANL A,#00000111B
33: 0072 64 07 XRL A,#00000111B;判断A的低三位是否为1
34: 0074 60 19 JZ SCANL3 ;如果低三位为1,则无按键,转第三行扫描
35: 0076 E5 A0 MOV A,P2 ;读键盘至A
36: 0078 54 07 ANL A,#00000111B;保留低三位的结果
37: 007A B4 06 05 CJNE A,#00000110B,NOK3;不是K3键,转NOK3
38: 007D 74 03 MOV A,#3 ;是K3键将A赋值为3
39: 007F 02 00 CC LJMP DISPLAY ;转显示子程序
40: 0082 B4 05 05 NOK3: CJNE A,#00000101B,NOK4;不是K4键,转NOK4
41: 0085 74 04 MOV A,#4 ;是K4键将A赋值为4
42: 0087 02 00 CC LJMP DISPLAY ;转显示子程序
43: 008A 74 05 NOK4: MOV A,#5 ; 不是K3、K4,则一定是K5。将A赋值为5
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 008C 02 00 CC LJMP DISPLAY
45: 008F 75 A0 FF SCANL3 : MOV P2,#0FFH
46: 0092 C2 A5 CLR P2.5 ;P2.5清0,扫描第3行
47: 0094 E5 A0 MOV A,P2 ;读键盘至A
48: 0096 54 07 ANL A,#00000111B
49: 0098 64 07 XRL A,#00000111B;判断A的低三位是否为1
50: 009A 60 24 JZ SCANLOOP;如果低三位为1,则无按键,转SCANLOOP
51: 009C 12 00 C3 LCALL DELAY10MS;延时10ms(去抖延时)
52: 009F E5 A0 MOV A,P2 ;读键盘至A
53: 00A1 54 07 ANL A,#00000111B
54: 00A3 64 07 XRL A,#00000111B;判断A的低三位是否为1
55: 00A5 60 19 JZ SCANLOOP;如果低三位为1,则无按键,转SCANLOOP
56: 00A7 E5 A0 MOV A,P2 ;读键盘至A
57: 00A9 54 07 ANL A,#00000111B;保留低三位的结果
58: 00AB B4 06 05 CJNE A,#00000110B,NOK6;不是K6键,转NOK6
59: 00AE 74 06 MOV A,#6 ;是K6键将A赋值为6
60: 00B0 02 00 CC LJMP DISPLAY ;转显示子程序
61: 00B3 B4 05 05 NOK6: CJNE A,#00000101B,NOK7;不是K7键,转NOK7
62: 00B6 74 07 MOV A,#7 ;是K7键将A赋值为7
63: 00B8 02 00 CC LJMP DISPLAY ;转显示子程序
64: 00BB 74 08 NOK7: MOV A,#8 ; 不是K6、K7,则一定是K8。将A赋值为8
65: 00BD 02 00 CC LJMP DISPLAY
66: 00C0 SCANLOOP:
67: 00C0 02 00 33 LJMP SCANK
68: 00C3 DELAY10MS:
69: 00C3 7E 0A MOV R6,#10
70: 00C5 7F FA D1: MOV R7,#250
71: 00C7 DF FE D2: DJNZ R7,D2
72: 00C9 DE FA DJNZ R6,D1
73: 00CB 22 RET
74: 00CC DISPLAY:
75: 00CC 90 00 D5 MOV DPTR,#TABLE ;将数据表TABLE的首地址赋给DPTR
76: 00CF 93 MOVC A,@A+DPTR ;将(A+DPTR)地址中的值赋给A
77: 00D0 F5 90 MOV P1,A ;送到P1口数码管显示
78: 00D2 02 00 33 LJMP SCANK ;跳到SCANK,重新开始扫描
79: 00D5 C0 F9 A4 B0 TABLE: DB 0C0H,0F9H,0A4H,0B0H
80: 00D9 99 92 82 F8 DB 99H,92H,82H,0F8H,80H
00DD 80
81: END
register banks used: ---
no errors
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
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
D1 CODE 00C5 70
D2 CODE 00C7 71
DELAY10MS CODE 00C3 68
DISPLAY CODE 00CC 74
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
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
NOK0 CODE 0054 20
NOK1 CODE 005C 23
NOK3 CODE 0082 40
NOK4 CODE 008A 43
NOK6 CODE 00B3 61
NOK7 CODE 00BB 64
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
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCANK CODE 0033 5
SCANL2 CODE 0061 25
SCANL3 CODE 008F 45
SCANLOOP CODE 00C0 66
SCON DATA 98
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
START CODE 0030 4
T0 BIT B4
T1 BIT B5
TABLE CODE 00D5 79
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 + -