📄 6.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: 6.ASM
Object File: 6.HEX
List File: 6.LST
Line I Addr Code Source
1: N 0000 ORG 0H
2: 0000 02 00 30 LJMP START
3: N 0030 ORG 30H
4: 0030 75 80 FF START: MOV P0,#0FFH
5: 0033 75 A0 00 MOV P2,#0H
6: 0036 75 30 00 MOV 30H,#0
7: 0039 75 31 00 MOV 31H,#0
8: 003C 75 32 00 MOV 32H,#0
9: 003F 75 33 00 MOV 33H,#0
10: 0042 90 00 E9 MOV DPTR,#TABLE ;将数据表TABLE的首地址赋给DPTR
11: 0045 DISAGAIN:
12: 0045 7C 04 MOV R4,#4
13: 0047 79 30 MOV R1,#30H
14: 0049 7A 10 MOV R2,#00010000B
15:
16: 004B 75 90 FF DISLOOP:MOV P1,#0FFH
17: 004E C2 92 CLR P1.2 ;P1.2清0,扫描第1行
18: 0050 E5 90 MOV A,P1 ;读键盘至A
19: 0052 54 03 ANL A,#00000011B
20: 0054 64 03 XRL A,#00000011B;判断A的低二位是否为1
21: 0056 60 30 JZ SCANL2 ;如果低二位为1,则无按键,转第二行扫描
22: 0058 12 00 D7 LCALL DELAY10MS;延时10ms(去抖延时)
23: 005B E5 90 MOV A,P1 ;读键盘至A
24: 005D 54 03 ANL A,#00000011B
25: 005F 64 03 XRL A,#00000011B;判断A的低二位是否为1
26: 0061 60 25 JZ SCANL2 ;如果低二位为1,则无按键,转第二行扫描
27: 0063 E5 90 MOV A,P1 ;读键盘至A
28: 0065 54 03 ANL A,#00000011B;保留低二位的结果
29: 0067 B4 02 0F CJNE A,#00000010B,NOK0;不是K0键,转NOK0
30: 006A 75 30 02 MOV 30H,#2 ;是K0键将30H地址赋值为2
31: 006D 75 31 03 MOV 31H,#3 ;将31H地址赋值为3
32: 0070 75 32 02 MOV 32H,#2 ;是将32H地址赋值为2
33: 0073 75 33 03 MOV 33H,#3 ;将33H地址赋值为3
34: 0076 02 00 C2 LJMP DISPLAY ;转显示子程序
35: 0079 75 30 08 NOK0: MOV 30H,#8 ;不是K0键,则一定是K1。将30H地址赋值为8
36: 007C 75 31 09 MOV 31H,#9 ;将31H地址赋值为9
37: 007F 75 32 08 MOV 32H,#8 ;将32H地址赋值为2
38: 0082 75 33 09 MOV 33H,#9 ;将33H地址赋值为3
39: 0085 02 00 C2 LJMP DISPLAY ;转显示子程序
40: 0088 75 90 FF SCANL2 :MOV P1,#0FFH
41: 008B C2 93 CLR P1.3 ;P1.3清0,扫描第2行
42: 008D E5 90 MOV A,P1 ;读键盘至A
43: 008F 54 03 ANL A,#00000011B
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0091 64 03 XRL A,#00000011B;判断A的低二位是否为1
45: 0093 60 2D JZ DISPLAY ;如果低二位为1,则无按键,转DISPLAY
46: 0095 12 00 D7 LCALL DELAY10MS;延时10ms(去抖延时)
47: 0098 E5 90 MOV A,P1 ;读键盘至A
48: 009A 54 03 ANL A,#00000011B
49: 009C 64 03 XRL A,#00000011B;判断A的低二位是否为1
50: 009E 60 22 JZ DISPLAY ;如果低二位为1,则无按键,转DISPLAY
51: 00A0 E5 90 MOV A,P1 ;读键盘至A
52: 00A2 54 03 ANL A,#00000011B;保留低二位的结果
53: 00A4 B4 02 0F CJNE A,#00000010B,NOK2;不是K2键,转NOK2
54: 00A7 75 30 06 MOV 30H,#6 ;是K2键将30H地址赋值为6
55: 00AA 75 31 08 MOV 31H,#8 ; 将31H地址赋值为8
56: 00AD 75 32 06 MOV 32H,#6 ;将32H地址赋值为6
57: 00B0 75 33 08 MOV 33H,#8 ; 将33H地址赋值为8
58: 00B3 02 00 C2 LJMP DISPLAY ;转显示子程序
59: 00B6 75 30 07 NOK2: MOV 30H,#7 ;不是K2,则一定是K3。将30H地址赋值为7
60: 00B9 75 31 07 MOV 31H,#7 ;将31H地址赋值为7
61: 00BC 75 32 01 MOV 32H,#1 ;将32H地址赋值为1
62: 00BF 75 33 01 MOV 33H,#1 ; 将33H地址赋值为1
63: 00C2 DISPLAY:
64: 00C2 E7 MOV A,@R1 ;
65: 00C3 93 MOVC A,@A+DPTR ;将(A+DPTR)地址中的值赋给A
66: 00C4 8A A0 MOV P2,R2 ;选择数码管
67: 00C6 F5 80 MOV P0,A ;送到P0口数码管显示
68: 00C8 12 00 E0 LCALL DELAY ;显示延时
69: 00CB EA MOV A,R2 ;R2的值移位
70: 00CC 23 RL A
71: 00CD FA MOV R2,A
72: 00CE 09 INC R1
73: 00CF DC 03 DJNZ R4,DD
74: 00D1 02 00 45 LJMP DISAGAIN ;重新开始扫描
75: 00D4 02 00 4B DD: LJMP DISLOOP
76: 00D7 DELAY10MS:
77: 00D7 7E 14 MOV R6,#20
78: 00D9 7F C8 D1: MOV R7,#200
79: 00DB DF FE D2: DJNZ R7,D2
80: 00DD DE FA DJNZ R6,D1
81: 00DF 22 RET
82: 00E0 DELAY:
83: 00E0 7E 14 MOV R6,#20
84: 00E2 7F 64 D3: MOV R7,#100
85: 00E4 DF FE D4: DJNZ R7,D4
86: 00E6 DE FA DJNZ R6,D3
87: 00E8 22 RET
88: 00E9 C0 F9 A4 B0 TABLE: DB 0C0H,0F9H,0A4H,0B0H ;0,1,2,3
89: 00ED 99 92 82 F8 DB 99H,92H,82H,0F8H,80H,90H ;4,5,6,7,8,9
00F1 80 90
90: END
91:
92:
register banks used: ---
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
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
D1 CODE 00D9 78
D2 CODE 00DB 79
D3 CODE 00E2 84
D4 CODE 00E4 85
DD CODE 00D4 75
DELAY CODE 00E0 82
DELAY10MS CODE 00D7 76
DISAGAIN CODE 0045 11
DISLOOP CODE 004B 16
DISPLAY CODE 00C2 63
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 0079 35
NOK2 CODE 00B6 59
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
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCANL2 CODE 0088 40
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 00E9 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 + -