📄 sdisp.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: SDISP.ASM
Object File: SDISP.HEX
List File: SDISP.LST
Line I Addr Code Source
1: ;该程序实现在三个数码管上显示123,显示停留5秒钟
2: ;然后以0.5秒为间隔闪动5次,不断循环。
3: ;采用静态显示方式
4: N 8000 LED EQU 8000H ;左边第1个数码管的地址
5: N 0030 BUFFER EQU 30H ;显示缓冲区首地址
6: N 00 FLASH BIT 00H ;闪烁标志
7: N 0000 ORG 0
8: 0000 02 00 30 LJMP START
9: N 0030 ORG 30H
10: 0030 75 81 60 START: MOV SP,#60H
11: 0033 D2 00 SETB FLASH ;使显示常亮
12: 0035 78 30 MOV R0,#BUFFER
13: 0037 7A 03 MOV R2,#3 ;给显示缓冲区的单元数
14: 0039 74 01 MOV A,#1
15: 003B F6 LOOP1: MOV @R0,A ;给显示缓冲区赋值
16: 003C 04 INC A
17: 003D 08 INC R0
18: 003E DA FB DJNZ R2,LOOP1
19: 0040 12 00 56 LOOP: LCALL DISP ;显示数据
20: 0043 12 00 A2 LCALL DELAY5S ;延时5秒钟
21: 0046 7B 0A MOV R3,#10 ;闪烁10次
22: 0048 12 00 56 LL1: LCALL DISP
23: 004B 12 00 93 LCALL DELAY ;延时0.5秒
24: 004E B2 00 CPL FLASH ;闪烁标志取反实现显示的闪烁
25: 0050 DB F6 DJNZ R3,LL1
26: 0052 D2 00 SETB FLASH ;闪烁标志置1,实现显示常亮
27: 0054 80 EA SJMP LOOP
28: ;显示子程序
29: ;当FLASH标志为1时,将显示缓冲区的16进制数显示出来
30: ;当FLASH标志为0时,熄灭所有显示器
31: ;使用寄存器为A、R0、R2和DPTR
32: 0056 78 30 DISP: MOV R0,#BUFFER
33: 0058 7A 03 MOV R2,#3 ;一共有3个数码管
34: 005A 90 80 00 MOV DPTR,#LED ;送数码管地址
35: 005D 30 00 18 JNB FLASH,DISP2 ;若闪烁标志为0,则转移
36: 0060 C0 83 DISP1: PUSH DPH ;保护数码管地址
37: 0062 C0 82 PUSH DPL
38: 0064 E6 MOV A,@R0
39: 0065 90 00 83 MOV DPTR,#TAB ;指向显示段码的码表
40: 0068 93 MOVC A,@A+DPTR ;查表将需要显示的数据变换为显示段码
41: 0069 D0 82 POP DPL
42: 006B D0 83 POP DPH
43: 006D F0 MOVX @DPTR,A ;段码送数码管显示
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 006E 08 INC R0 ;指向下一个要显示的数据
45: 006F E5 83 MOV A,DPH
46: 0071 24 10 ADD A,#10H
47: 0073 F5 83 MOV DPH,A ;指向下一个数码管
48: 0075 DA E9 DJNZ R2,DISP1 ;没有显示完则继续
49: 0077 22 RET
50: 0078 E4 DISP2: CLR A
51: 0079 F0 MOVX @DPTR,A ;熄灭数码管
52: 007A E5 83 MOV A,DPH
53: 007C 24 10 ADD A,#10H
54: 007E F5 83 MOV DPH,A ;指向下一个数码管
55: 0080 DA F6 DJNZ R2,DISP2
56: 0082 22 RET
57: 0083 3F 06 5B 4F TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
0087 66 6D 7D 07
58: 008B 7F 6F 77 7C DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
008F 39 5E 79 71
59: ;延时0.5秒子程序
60: ;使用寄存器:R5、R6和R7
61: 0093 7D 02 DELAY: MOV R5,#2 ;延时0.5秒子程序
62: 0095 7E FA D1: MOV R6,#250
63: 0097 7F FA D2: MOV R7,#250
64: 0099 00 D3: NOP
65: 009A 00 NOP
66: 009B DF FC DJNZ R7,D3
67: 009D DE F8 DJNZ R6,D2
68: 009F DD F4 DJNZ R5,D1
69: 00A1 22 RET
70: ;延时5秒子程序
71: ;使用寄存器:R4
72: 00A2 7C 0A DELAY5S:MOV R4,#10 ;延时5秒子程序
73: 00A4 12 00 93 DD1: LCALL DELAY
74: 00A7 DC FB DJNZ R4,DD1
75: 00A9 22 RET
76: END
77:
78:
79:
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
BUFFER NUMBER 0030 5
CY BIT D7
D1 CODE 0095 62
D2 CODE 0097 63
D3 CODE 0099 64
DD1 CODE 00A4 73
DELAY CODE 0093 61
DELAY5S CODE 00A2 72
DISP CODE 0056 32
DISP1 CODE 0060 36
DISP2 CODE 0078 50
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
FLASH BIT 00 6
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
LED NUMBER 8000 4
LL1 CODE 0048 22
LOOP CODE 0040 19
LOOP1 CODE 003B 15
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
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
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 10
T0 BIT B4
T1 BIT B5
TAB CODE 0083 57
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 + -