📄 clock.lst
字号:
A51 MACRO ASSEMBLER CLOCK 04/14/2008 00:24:43 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN clock.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE clock.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;#include <def.inc>
+1 2 ;----- 常数定义 -------
0018 +1 3 DATA_TL0 EQU 18H ; 1 ms初值
00FD +1 4 DATA_TH0 EQU 0FDH
00F8 +1 5 DATA_TL1 EQU 0F8H ;10 ms初值
00D8 +1 6 DATA_TH1 EQU 0D8H
+1 7
0008 +1 8 N_DISP EQU 8 ;要显示的总位数
+1 9 ;----- IO 定义 -------
0090 +1 10 SEG_OUT EQU P1
+1 11
00B2 +1 12 POS_CONTL1 BIT P3.2
00B3 +1 13 POS_CONTL2 BIT P3.3
00B4 +1 14 POS_CONTL3 BIT P3.4
+1 15
+1 16 ;------ 位寻址区 -------
0020 +1 17 CUR_DISP EQU 20H ;变量,当前要显示的位(0~7)
+1 18
+1 19 ;------ 通用RAM -------
0030 +1 20 TIME_10mS EQU 30H ;计时变量
0031 +1 21 TIME_1S EQU 31H
0032 +1 22 TIME_10S EQU 32H
0033 +1 23 TIME_1Min EQU 33H
0034 +1 24 TIME_10Min EQU 34H
0035 +1 25 TIME_1H EQU 35H
0036 +1 26 TIME_10H EQU 36H
+1 27
0037 +1 28 SPACE EQU 37H ;间隔符号值
+1 29
+1 30 ;----- 定义8个显示内容 ---------
0036 +1 31 DIS0 EQU TIME_10H
0035 +1 32 DIS1 EQU TIME_1H
0037 +1 33 DIS2 EQU SPACE
0034 +1 34 DIS3 EQU TIME_10Min
0033 +1 35 DIS4 EQU TIME_1Min
0037 +1 36 DIS5 EQU SPACE
0032 +1 37 DIS6 EQU TIME_10S
0031 +1 38 DIS7 EQU TIME_1S
+1 39
+1 40 MOV_BIT MACRO BIT1, BIT2
+1 41 MOV C, BIT2
+1 42 MOV BIT1, C
+1 43 ENDM
44
0000 45 ORG 0000H
0000 020030 46 LJMP START
47
000B 48 ORG 000BH ;1mS中断,动态扫描
000B 01B8 49 JMP INT_T0
50
001B 51 ORG 001BH
001B 8052 52 JMP INT_T1 ;10mS 中断,完成时钟计时
53
0030 54 ORG 0030H
0030 55 START:
56 ;--------- 重置堆栈 -------------
0030 758160 57 MOV SP, #60H
58
A51 MACRO ASSEMBLER CLOCK 04/14/2008 00:24:43 PAGE 2
59 ;---------- 端口初始化 -----------
0033 7590FF 60 MOV P1, #0FFH
0036 75B0FF 61 MOV P3, #0FFH
62
63 ;--------- 定时器设置 ------------
0039 758911 64 MOV TMOD, #11h ;设置C/T0 和 C/T1 工作在方式 1(16bit 定时)
003C 758A18 65 MOV TL0, #DATA_TL0 ;初值
003F 758CFD 66 MOV TH0, #DATA_TH0
0042 758BF8 67 MOV TL1, #DATA_TL1
0045 758DD8 68 MOV TH1, #DATA_TH1
0048 D28C 69 SETB TR0 ;启动
004A D28E 70 SETB TR1
71
72 ;--------- 中断设置 -------------
004C 75B808 73 MOV IP, #00001000B ; 计时的C/T1 优先级为“高”
004F 75A88A 74 MOV IE, #10001010B ; 开放C/T0、C/T1中断
75
76
77 ;--------- 变量初始化 ------------
0052 753064 78 MOV TIME_10mS, #100 ;计时变量
0055 753100 79 MOV TIME_1S, #0
0058 753200 80 MOV TIME_10S, #0
005B 753300 81 MOV TIME_1Min, #0
005E 753400 82 MOV TIME_10Min, #0
0061 753500 83 MOV TIME_1H, #0
0064 753600 84 MOV TIME_10H, #0
85
0067 752000 86 MOV CUR_DISP, #0 ;显示位
006A 75370A 87 MOV SPACE, #10 ;显示空格“-”的值
88
006D 80FE 89 MAINLOOP: JMP MAINLOOP ;主循环
90
91
92 ;-------- 10mS中断,计时 ----------
006F C0D0 93 INT_T1: PUSH PSW ;保护现场
0071 C0E0 94 PUSH ACC
95
0073 758BF8 96 MOV TL1, #DATA_TL1 ;重置初值
0076 758DD8 97 MOV TH1, #DATA_TH1
98
0079 D53037 99 DJNZ TIME_10mS, EXIT_T1
100
007C 753064 101 MOV TIME_10mS, #100 ;每1S
007F 0531 102 INC TIME_1S
0081 E531 103 MOV A, TIME_1S
0083 B40A2D 104 CJNE A, #10, EXIT_T1
105
0086 753100 106 MOV TIME_1S, #0 ;每10S
0089 0532 107 INC TIME_10S
008B E532 108 MOV A, TIME_10S
008D B40623 109 CJNE A, #6, EXIT_T1
110
0090 753200 111 MOV TIME_10S, #0 ;每1Min
0093 0533 112 INC TIME_1Min
0095 E533 113 MOV A, TIME_1Min
0097 B40A19 114 CJNE A, #10, EXIT_T1
115
009A 753300 116 MOV TIME_1Min, #0 ;每10Min
009D 0534 117 INC TIME_10Min
009F E534 118 MOV A, TIME_10Min
00A1 B4060F 119 CJNE A, #6, EXIT_T1
120
00A4 753400 121 MOV TIME_10Min, #0 ;每1H
00A7 0535 122 INC TIME_1H
00A9 E535 123 MOV A, TIME_1H
00AB B40A05 124 CJNE A, #10, EXIT_T1
A51 MACRO ASSEMBLER CLOCK 04/14/2008 00:24:43 PAGE 3
125
00AE 753500 126 MOV TIME_1H, #0 ;每10H
00B1 0536 127 INC TIME_10H
128
00B3 D0E0 129 EXIT_T1: POP ACC ;恢复现场
00B5 D0D0 130 POP PSW
00B7 32 131 RETI
132
133 ;-------- 1mS中断,动态扫描 ----------
00B8 C0D0 134 INT_T0: PUSH PSW ; 保护现场
00BA C0E0 135 PUSH ACC
00BC C083 136 PUSH DPH
00BE C082 137 PUSH DPL
00C0 D2D3 138 SETB RS0 ; 选择工作寄存器1
139
00C2 758A18 140 MOV TL0, #DATA_TL0 ; 重置 T0 初值
00C5 758CFD 141 MOV TH0, #DATA_TH0
142
143 MOV_BIT POS_CONTL1, CUR_DISP.0 ;输出位选
146 MOV_BIT POS_CONTL2, CUR_DISP.1
149 MOV_BIT POS_CONTL3, CUR_DISP.2
152
00D4 E520 153 MOV A, CUR_DISP ;输出段选
00D6 900100 154 MOV DPTR, #TAB_DIS ;计算段显示内容的地址
00D9 93 155 MOVC A, @A+DPTR ; A= 在该位上要显示内容的地址
156
00DA F8 157 MOV R0, A
00DB E6 158 MOV A, @R0 ; A= 在该位要显示内容的值
159
00DC 9000F5 160 MOV DPTR, #TAB_CODE
00DF 93 161 MOVC A, @A+DPTR ; A= 要显示内容的段码
00E0 F590 162 MOV SEG_OUT, A ;段显输出
163
00E2 0520 164 INC CUR_DISP ;计算下次(1mS后)要显示的位
00E4 E520 165 MOV A, CUR_DISP
00E6 B40803 166 CJNE A, #N_DISP, EXIT_T0
00E9 752000 167 MOV CUR_DISP, #0
168
00EC D082 169 EXIT_T0: POP DPL
00EE D083 170 POP DPH
00F0 D0E0 171 POP ACC
00F2 D0D0 172 POP PSW ;恢复现场
00F4 32 173 RETI
174
00F5 175 TAB_CODE:
00F5 C0 176 DB 0C0H ;0 0 0
00F6 F9 177 DB 0F9H ;1 1 1
00F7 A4 178 DB 0A4H ;2 2 2
00F8 B0 179 DB 0B0H ;3 3 3
00F9 99 180 DB 099H ;4 4 4
00FA 92 181 DB 092H ;5 5 5
00FB 82 182 DB 082H ;6 6 6
00FC F8 183 DB 0F8H ;7 7 7
00FD 80 184 DB 080H ;8 8 8
00FE 98 185 DB 098H ;9 9 9
00FF BF 186 DB 0BFH ;- 10
187
0100 188 TAB_DIS:
0100 36 189 DB DIS0
0101 35 190 DB DIS1
0102 37 191 DB DIS2
0103 34 192 DB DIS3
0104 33 193 DB DIS4
0105 37 194 DB DIS5
0106 32 195 DB DIS6
0107 31 196 DB DIS7
A51 MACRO ASSEMBLER CLOCK 04/14/2008 00:24:43 PAGE 4
197
198 END
A51 MACRO ASSEMBLER CLOCK 04/14/2008 00:24:43 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
CUR_DISP . . . . . N NUMB 0020H A
DATA_TH0 . . . . . N NUMB 00FDH A
DATA_TH1 . . . . . N NUMB 00D8H A
DATA_TL0 . . . . . N NUMB 0018H A
DATA_TL1 . . . . . N NUMB 00F8H A
DIS0 . . . . . . . N NUMB 0036H A
DIS1 . . . . . . . N NUMB 0035H A
DIS2 . . . . . . . N NUMB 0037H A
DIS3 . . . . . . . N NUMB 0034H A
DIS4 . . . . . . . N NUMB 0033H A
DIS5 . . . . . . . N NUMB 0037H A
DIS6 . . . . . . . N NUMB 0032H A
DIS7 . . . . . . . N NUMB 0031H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
EXIT_T0. . . . . . C ADDR 00ECH A
EXIT_T1. . . . . . C ADDR 00B3H A
IE . . . . . . . . D ADDR 00A8H A
INT_T0 . . . . . . C ADDR 00B8H A
INT_T1 . . . . . . C ADDR 006FH A
IP . . . . . . . . D ADDR 00B8H A
MAINLOOP . . . . . C ADDR 006DH A
N_DISP . . . . . . N NUMB 0008H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
POS_CONTL1 . . . . B ADDR 00B0H.2 A
POS_CONTL2 . . . . B ADDR 00B0H.3 A
POS_CONTL3 . . . . B ADDR 00B0H.4 A
PSW. . . . . . . . D ADDR 00D0H A
RS0. . . . . . . . B ADDR 00D0H.3 A
SEG_OUT. . . . . . D ADDR 0090H A
SP . . . . . . . . D ADDR 0081H A
SPACE. . . . . . . N NUMB 0037H A
START. . . . . . . C ADDR 0030H A
TAB_CODE . . . . . C ADDR 00F5H A
TAB_DIS. . . . . . C ADDR 0100H A
TH0. . . . . . . . D ADDR 008CH A
TH1. . . . . . . . D ADDR 008DH A
TIME_10H . . . . . N NUMB 0036H A
TIME_10MIN . . . . N NUMB 0034H A
TIME_10MS. . . . . N NUMB 0030H A
TIME_10S . . . . . N NUMB 0032H A
TIME_1H. . . . . . N NUMB 0035H A
TIME_1MIN. . . . . N NUMB 0033H A
TIME_1S. . . . . . N NUMB 0031H A
TL0. . . . . . . . D ADDR 008AH A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
TR1. . . . . . . . B ADDR 0088H.6 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -