📄 5.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: 5.ASM
Object File: 5.HEX
List File: 5.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 ;P0口置1
5: 0033 75 A0 00 MOV P2,#0H ;P2口清0
6: 0036 75 30 00 MOV 30H,#0 ;初始显示00
7: 0039 75 31 00 MOV 31H,#0 ;
8: 003C 90 00 CB MOV DPTR,#TABLE ;将数据表TABLE的首地址赋给DPTR
9: 003F SCANK:
10: 003F 7C 02 MOV R4,#2 ;数码管数目赋给R4
11: 0041 79 30 MOV R1,#30H ;R1装显示内容的地址
12: 0043 7A 40 MOV R2,#01000000B ;R2装位选信号
13: 0045 DISLOOP:
14: 0045 75 90 FF MOV P1,#0FFH
15: 0048 C2 92 CLR P1.2 ;P1.2清0,扫描第1行
16: 004A E5 90 MOV A,P1 ;读键盘至A
17: 004C 54 03 ANL A,#00000011B
18: 004E 64 03 XRL A,#00000011B;判断A的低二位是否为1
19: 0050 60 24 JZ SCANL2 ;如果低二位为1,则无按键,转第二行扫描
20: 0052 12 00 B9 LCALL DELAY10MS;延时10ms(去抖延时)
21: 0055 E5 90 MOV A,P1 ;读键盘至A
22: 0057 54 03 ANL A,#00000011B
23: 0059 64 03 XRL A,#00000011B;判断A的低二位是否为1
24: 005B 60 19 JZ SCANL2 ;如果低二位为1,则无按键,转第二行扫描
25: 005D E5 90 MOV A,P1 ;读键盘至A
26: 005F 54 03 ANL A,#00000011B;保留低二位的结果
27: 0061 B4 02 09 CJNE A,#00000010B,NOK0;不是K0键,转NOK0
28: 0064 75 30 02 MOV 30H,#2 ;是K0键将30H地址赋值为2
29: 0067 75 31 03 MOV 31H,#3 ;将31H地址赋值为3
30: 006A 02 00 A4 LJMP DISPLAY ;转显示子程序
31: 006D 75 30 08 NOK0: MOV 30H,#8 ;不是K0键则是K1。将30H地址赋值为8
32: 0070 75 31 09 MOV 31H,#9 ;将31H地址赋值为9
33: 0073 02 00 A4 LJMP DISPLAY ;转显示子程序
34: 0076 75 90 FF SCANL2 :MOV P1,#0FFH
35: 0079 C2 93 CLR P1.3 ;P1.3清0,扫描第2行
36: 007B E5 90 MOV A,P1 ;读键盘至A
37: 007D 54 03 ANL A,#00000011B
38: 007F 64 03 XRL A,#00000011B;判断A的低二位是否为1
39: 0081 60 21 JZ DISPLAY ;如果低二位为1,则无按键,转DISPLAY
40: 0083 12 00 B9 LCALL DELAY10MS;延时10ms(去抖延时)
41: 0086 E5 90 MOV A,P1 ;读键盘至A
42: 0088 54 03 ANL A,#00000011B
43: 008A 64 03 XRL A,#00000011B;判断A的低二位是否为1
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 008C 60 16 JZ DISPLAY ;如果低二位为1,则无按键,转DISPLAY
45: 008E E5 90 MOV A,P1 ;读键盘至A
46: 0090 54 03 ANL A,#00000011B;保留低二位的结果
47: 0092 B4 02 09 CJNE A,#00000010B,NOK2;不是K2键,转NOK2
48: 0095 75 30 06 MOV 30H,#6 ;是K2键将30H地址赋值为6
49: 0098 75 31 08 MOV 31H,#8 ; 将31H地址赋值为8
50: 009B 02 00 A4 LJMP DISPLAY ;转显示子程序
51: 009E 75 30 07 NOK2: MOV 30H,#7 ;不是K2,则一定是K3。将30H地址赋值为7
52: 00A1 75 31 07 MOV 31H,#7 ;将31H地址赋值为7
53:
54: 00A4 E7 DISPLAY:MOV A,@R1 ;R1中的数据作为地址,取数据给A
55: 00A5 93 MOVC A,@A+DPTR;将(A+DPTR)地址中的值赋给A
56: 00A6 8A A0 MOV P2,R2 ;选择第一个数码管
57: 00A8 F5 80 MOV P0,A ;送到P0口数码管显示
58: 00AA 12 00 C2 LCALL DELAY ;显示延时
59: 00AD EA MOV A,R2 ;位选信号左移
60: 00AE 23 RL A ;
61: 00AF FA MOV R2,A ;
62: 00B0 09 INC R1 ;下一个显示的内容的地址
63: 00B1 DC 03 DJNZ R4,DT ;显示完转DT
64: 00B3 02 00 3F LJMP SCANK ;重新开始扫描
65: 00B6 02 00 45 DT: LJMP DISLOOP
66: 00B9 DELAY10MS:
67: 00B9 7E 14 MOV R6,#20
68: 00BB 7F C8 D1: MOV R7,#200
69: 00BD DF FE D2: DJNZ R7,D2
70: 00BF DE FA DJNZ R6,D1
71: 00C1 22 RET
72: 00C2 DELAY:
73: 00C2 7E 64 MOV R6,#100
74: 00C4 7F 64 D3: MOV R7,#100
75: 00C6 DF FE D4: DJNZ R7,D4
76: 00C8 DE FA DJNZ R6,D3
77: 00CA 22 RET
78: 00CB C0 F9 A4 B0 TABLE: DB 0C0H,0F9H,0A4H,0B0H ;0,1,2,3
79: 00CF 99 92 82 F8 DB 99H,92H,82H,0F8H,80H,90H ;4,5,6,7,8,9
00D3 80 90
80: END
81:
82:
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 00BB 68
D2 CODE 00BD 69
D3 CODE 00C4 74
D4 CODE 00C6 75
DELAY CODE 00C2 72
DELAY10MS CODE 00B9 66
DISLOOP CODE 0045 13
DISPLAY CODE 00A4 54
DPH DATA 83
DPL DATA 82
DT CODE 00B6 65
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 006D 31
NOK2 CODE 009E 51
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 4
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCANK CODE 003F 9
SCANL2 CODE 0076 34
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 00CB 78
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 + -