📄 7.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: 7.ASM
Object File: 7.HEX
List File: 7.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 80 FF START: MOV P0,#0FFH
5: 0033 75 A0 01 MOV P2,#01H;选中第1个数码管进行显示
6: 0036 C2 00 CLR 20H.0 ;标志位初始为0,K1键标志位
7: 0038 C2 01 CLR 20H.1 ;K2标志位
8: 003A C2 02 CLR 20H.2 ;K3标志位
9: 003C 90 00 E5 MOV DPTR,#TABLE;将数据表TABLE的首地址赋给DPTR
10: 003F 75 89 01 MOV TMOD,#01H ;定时器0方式1
11: 0042 7E C8 MOV R6,#200 ;计溢出次数
12: 0044 75 90 FF SCANK: MOV P1,#0FFH
13: 0047 C2 94 CLR P1.4 ;P1.4清0,扫描第1行
14: 0049 E5 90 MOV A,P1 ;读键盘至A
15: 004B 54 0F ANL A,#00001111B
16: 004D 64 0F XRL A,#00001111B;判断A的低四位是否为1
17: 004F 60 48 JZ DISPLAY ;如果低四位为1,则无按键,转DISPLAY
18: 0051 12 00 90 LCALL DELAY10MS;延时10ms(去抖延时)
19: 0054 E5 90 MOV A,P1 ;读键盘至A
20: 0056 54 0F ANL A,#00001111B
21: 0058 64 0F XRL A,#00001111B;判断A的低四位是否为1
22: 005A 60 3D JZ DISPLAY ;如果低四位为1,则无按键,转DISPLAY
23: 005C E5 90 MOV A,P1 ;读键盘至A
24: 005E 54 0F ANL A,#00001111B;保留低四位的结果
25: 0060 B4 0D 0F CJNE A,#00001101B,NOK1;不是K1键,转NOK1
26: 0063 D2 00 SETB 20H.0 ;是K1键将标志位置1,0-9
27: 0065 C2 01 CLR 20H.1 ;其他标志位清0
28: 0067 C2 02 CLR 20H.2 ;
29: 0069 7A 00 MOV R2,#0
30: 006B EA MOV A,R2
31: 006C 93 MOVC A,@A+DPTR ;将(A+DPTR)地址中的值赋给A
32: 006D F5 80 MOV P0,A ;送到P0口数码管显示
33: 006F 02 00 99 LJMP DISPLAY ;转显示子程序
34: 0072 B4 0B 09 NOK1: CJNE A,#00001011B,NOK2;不是K2键,转NOK2
35: 0075 D2 01 SETB 20H.1 ;是K2键将标志位置1
36: 0077 C2 00 CLR 20H.0 ;其他标志位清0
37: 0079 C2 02 CLR 20H.2 ;
38: 007B 02 00 99 LJMP DISPLAY ;转显示子程序
39: 007E B4 07 18 NOK2: CJNE A,#00000111B,DISPLAY;不是K3键,转DISPLAY
40: 0081 D2 02 SETB 20H.2 ;是K3键将标志位置1,9-0
41: 0083 C2 00 CLR 20H.0 ;其他标志位清0
42: 0085 C2 01 CLR 20H.1 ;
43: 0087 7A 09 MOV R2,#9
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0089 EA MOV A,R2
45: 008A 93 MOVC A,@A+DPTR ;将(A+DPTR)地址中的值赋给A
46: 008B F5 80 MOV P0,A ;送到P0口数码管显示
47: 008D 02 00 99 LJMP DISPLAY ;转显示子程序
48: 0090 DELAY10MS:
49: 0090 7E 0A MOV R6,#10
50: 0092 7F FA D1: MOV R7,#250
51: 0094 DF FE D2: DJNZ R7,D2
52: 0096 DE FA DJNZ R6,D1
53: 0098 22 RET
54:
55: 0099 20 01 06 DISPLAY:JB 20H.1,KEY2
56: 009C 20 00 06 JB 20H.0,KEY1
57: 009F 20 02 23 JB 20H.2,KEY3
58: 00A2 02 00 44 KEY2: LJMP SCANK ;跳到SCANK,重新开始扫描
59: 00A5 KEY1:
60: 00A5 75 8C EC MOV TH0,#0ECH ;高八位,5ms
61: 00A8 75 8A 78 MOV TL0,#78H ;低八位
62: 00AB D2 8C SETB TR0 ;启动定时器
63: 00AD 10 8D 02 WAIT1: JBC TF0,WAIT2
64: 00B0 80 FB JMP WAIT1
65: 00B2 DE 90 WAIT2: DJNZ R6,SCANK ;溢出次数减1
66: 00B4 7E C8 MOV R6,#200 ;重新赋溢出次数
67: 00B6 C2 8C CLR TR0
68: 00B8 0A INC R2
69: 00B9 BA 0A 02 CJNE R2,#10,GOKEY1 ;判断是否显示数字加到10
70: 00BC AA 00 MOV R2,0 ;如加到10,重新赋0
71: 00BE EA GOKEY1: MOV A,R2
72: 00BF 93 MOVC A,@A+DPTR ;将(A+DPTR)地址中的值赋给A
73: 00C0 F5 80 MOV P0,A ;送到P0口数码管显示
74: 00C2 02 00 44 LJMP SCANK ;跳到SCANK,重新开始扫描
75: 00C5 KEY3:
76: 00C5 75 8C EC MOV TH0,#0ECH ;高八位,5ms
77: 00C8 75 8A 78 MOV TL0,#78H ;低八位
78: 00CB D2 8C SETB TR0 ;启动定时器
79: 00CD 10 8D 02 WAIT3: JBC TF0,WAIT4
80: 00D0 80 FB JMP WAIT3
81: 00D2 DE CE WAIT4: DJNZ R6,KEY2
82: 00D4 7E C8 MOV R6,#200
83: 00D6 C2 8C CLR TR0
84: 00D8 1A DEC R2
85: 00D9 BA FF 02 CJNE R2,#0FFH,GOKEY3 ;判断是否显示数字减到FF
86: 00DC 7A 09 MOV R2,#9 ;重新赋9
87: 00DE GOKEY3:
88: 00DE EA MOV A,R2
89: 00DF 93 MOVC A,@A+DPTR ;将(A+DPTR)地址中的值赋给A
90: 00E0 F5 80 MOV P0,A ;送到P0口数码管显示
91:
92: 00E2 02 00 44 LJMP SCANK ;跳到SCANK,重新开始扫描
93: 00E5 C0 F9 A4 B0 TABLE: DB 0C0H,0F9H,0A4H,0B0H
94: 00E9 99 92 82 F8 DB 99H,92H,82H,0F8H,80H,90H
00ED 80 90
95: END
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
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
D1 CODE 0092 50
D2 CODE 0094 51
DELAY10MS CODE 0090 48
DISPLAY CODE 0099 55
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
GOKEY1 CODE 00BE 71
GOKEY3 CODE 00DE 87
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
KEY1 CODE 00A5 59
KEY2 CODE 00A2 58
KEY3 CODE 00C5 75
NOK1 CODE 0072 34
NOK2 CODE 007E 39
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
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCANK CODE 0044 12
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 00E5 93
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
WAIT1 CODE 00AD 63
WAIT2 CODE 00B2 65
WAIT3 CODE 00CD 79
WAIT4 CODE 00D2 81
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -