📄 ddisp.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: DDISP.ASM
Object File: DDISP.HEX
List File: DDISP.LST
Line I Addr Code Source
1: ;该程序实现在六个数码管上显示123456,显示停留5秒钟
2: ;然后以0.5秒为间隔闪动5次,不断循环。
3: ;显示方式为动态显示
4: N 8000 LED1 EQU 8000H ;数码管段驱动器的地址
5: N 9000 LED2 EQU 9000H ;数码管位驱动器的地址
6: N 0030 BUFFER EQU 30H ;显示缓冲区首地址
7: N 00 FLASH BIT 00H ;闪烁标志
8: N 0000 ORG 0
9: 0000 02 00 30 LJMP START
10: N 000B ORG 0BH
11: 000B 02 00 5F LJMP DISP
12: N 0030 ORG 30H
13: 0030 75 81 60 START: MOV SP,#60H
14: 0033 75 89 01 MOV TMOD,#01H ;设T0为方式1
15: 0036 75 8C D8 MOV TH0,#0D8H ;10ms定时初值
16: 0039 75 8A F0 MOV TL0,#0F0H
17: 003C D2 A9 SETB ET0 ;允许T0中断
18: 003E D2 AF SETB EA ;开CPU总中断
19: 0040 D2 8C SETB TR0 ;启动T0计数
20: 0042 D2 00 SETB FLASH ;使显示常亮
21: 0044 78 30 MOV R0,#BUFFER
22: 0046 7A 06 MOV R2,#6 ;显示缓冲区单元数
23: 0048 74 01 MOV A,#1
24: 004A F6 LOOP1: MOV @R0,A ;给显示缓冲区赋值
25: 004B 04 INC A
26: 004C 08 INC R0
27: 004D DA FB DJNZ R2,LOOP1
28: 004F 12 00 DC LOOP: LCALL DELAY5S ;延时5秒钟
29: 0052 7B 0A MOV R3,#10 ;闪烁10次
30: 0054 12 00 CD LL1: LCALL DELAY ;延时0.5秒
31: 0057 B2 00 CPL FLASH ;闪烁标志取反实现显示的闪烁
32: 0059 DB F9 DJNZ R3,LL1
33: 005B D2 00 SETB FLASH ;闪烁标志置1,实现显示常亮
34: 005D 80 F0 SJMP LOOP
35: ;T0中断服务程序,实现每10ms一次的定时动态显示功能
36: ;当FLASH标志为1时,将显示缓冲区的16进制数显示出来
37: ;当FLASH标志为0时,熄灭所有显示器
38: ;使用寄存器为A、R0-R6和DPTR
39: 005F C0 D0 DISP: PUSH PSW
40: 0061 C0 E0 PUSH ACC
41: 0063 C0 83 PUSH DPH
42: 0065 C0 82 PUSH DPL
43: 0067 D2 D3 SETB RS0 ;选择1区工作寄存器
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0069 C2 D4 CLR RS1
45: 006B C2 8C CLR TR0 ;停止T0计数
46: 006D 75 8C D8 MOV TH0,#0D8H ;10ms定时初值
47: 0070 75 8A F0 MOV TL0,#0F0H
48: 0073 D2 8C SETB TR0 ;启动T0计数
49: 0075 78 30 MOV R0,#BUFFER
50: 0077 79 FE MOV R1,#0FEH ;位码初值
51: 0079 7A 06 MOV R2,#6 ;一共有6个数码管
52: 007B 90 80 00 MOV DPTR,#LED1 ;送数码管段驱动器地址
53: 007E AB 83 MOV R3,DPH ;存段驱动器地址
54: 0080 AC 82 MOV R4,DPL
55: 0082 90 90 00 MOV DPTR,#LED2 ;送数码管位驱动器地址
56: 0085 AD 83 MOV R5,DPH ;存位驱动器地址
57: 0087 AE 82 MOV R6,DPL
58: 0089 30 00 21 JNB FLASH,DISP2 ;若闪烁标志为0,则转移
59: 008C E6 DISP1: MOV A,@R0 ;取要显示数据
60: 008D 90 00 B6 MOV DPTR,#TAB ;指向显示段码的码表
61: 0090 93 MOVC A,@A+DPTR ;查表将需要显示的数据变换为显示段码
62: 0091 8B 83 MOV DPH,R3 ;恢复段驱动器地址
63: 0093 8C 82 MOV DPL,R4
64: 0095 F0 MOVX @DPTR,A ;段码送数码管段驱动器
65: 0096 E9 MOV A,R1 ;取显示位码
66: 0097 8D 83 MOV DPH,R5 ;恢复位驱动器地址
67: 0099 8E 82 MOV DPL,R6
68: 009B F0 MOVX @DPTR,A ;点亮一个数码管
69: 009C 23 RL A ;指向下一位数码管
70: 009D F9 MOV R1,A ;存位码
71: 009E 08 INC R0 ;指向下一个要显示的数据
72: 009F 12 00 C6 LCALL D1MS ;点亮数码管1ms
73: 00A2 DA E8 DJNZ R2,DISP1 ;没有显示完则继续
74: 00A4 D0 82 DISP3: POP DPL
75: 00A6 D0 83 POP DPH
76: 00A8 D0 E0 POP ACC
77: 00AA D0 D0 POP PSW
78: 00AC 32 RETI
79: 00AD 8D 83 DISP2: MOV DPH,R5 ;恢复位驱动器地址
80: 00AF 8E 82 MOV DPL,R6
81: 00B1 74 FF MOV A,#0FFH
82: 00B3 F0 MOVX @DPTR,A ;熄灭数码管
83: 00B4 80 EE SJMP DISP3
84: 00B6 3F 06 5B 4F TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
00BA 66 6D 7D 07
85: 00BE 7F 6F 77 7C DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
00C2 39 5E 79 71
86: ;延时1ms子程序
87: ;使用寄存器R7
88: 00C6 7F FA D1MS: MOV R7,#250
89: 00C8 00 D1MS1: NOP
90: 00C9 00 NOP
91: 00CA DF FC DJNZ R7,D1MS1
92: 00CC 22 RET
93: ;延时0.5秒子程序
94: ;使用寄存器:R5、R6和R7
95: 00CD 7D 02 DELAY: MOV R5,#2 ;延时0.5秒子程序
96: 00CF 7E FA D1: MOV R6,#250
97: 00D1 7F FA D2: MOV R7,#250
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
98: 00D3 00 D3: NOP
99: 00D4 00 NOP
100: 00D5 DF FC DJNZ R7,D3
101: 00D7 DE F8 DJNZ R6,D2
102: 00D9 DD F4 DJNZ R5,D1
103: 00DB 22 RET
104: ;延时5秒子程序
105: ;使用寄存器:R4
106: 00DC 7C 0A DELAY5S:MOV R4,#10 ;延时5秒子程序
107: 00DE 12 00 CD DD1: LCALL DELAY
108: 00E1 DC FB DJNZ R4,DD1
109: 00E3 22 RET
110: END
111:
112:
113:
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
BUFFER NUMBER 0030 6
CY BIT D7
D1 CODE 00CF 96
D1MS CODE 00C6 88
D1MS1 CODE 00C8 89
D2 CODE 00D1 97
D3 CODE 00D3 98
DD1 CODE 00DE 107
DELAY CODE 00CD 95
DELAY5S CODE 00DC 106
DISP CODE 005F 39
DISP1 CODE 008C 59
DISP2 CODE 00AD 79
DISP3 CODE 00A4 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
FLASH BIT 00 7
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
LED1 NUMBER 8000 4
LED2 NUMBER 9000 5
LL1 CODE 0054 30
LOOP CODE 004F 28
LOOP1 CODE 004A 24
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PS BIT BC
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
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
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 13
T0 BIT B4
T1 BIT B5
TAB CODE 00B6 84
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 + -