📄 clock.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: CLOCK.ASM
Object File: CLOCK.HEX
List File: CLOCK.LST
Line I Addr Code Source
1: N 0030 HOUR EQU 30H ;小时计数单元
2: N 0031 MIN EQU 31H ;分钟计数单元
3: N 0032 SEC EQU 32H ;秒计数单元
4: N 0033 COUNT EQU 33H ;50ms计数单元
5: N 0038 BUF EQU 38H ;显示缓冲区首地址,共3字节
6: N 0000 ORG 0
7: 0000 02 00 30 LJMP START
8: N 000B ORG 0BH
9: 000B 02 00 A0 LJMP TS
10: N 0030 ORG 30H
11: 0030 75 81 60 START: MOV SP,#60H
12: 0033 75 89 01 MOV TMOD,#01H ;设T0为方式1
13: 0036 75 8C 3C MOV TH0,#3CH
14: 0039 75 8A B0 MOV TL0,#0B0H ;50ms定时初值
15: 003C D2 B9 SETB PT0 ;设T0为高级中断
16: 003E D2 A9 SETB ET0 ;允许T0中断
17: 0040 75 33 14 MOV COUNT,#20 ;50ms计数单元赋初值
18: 0043 75 30 00 MOV HOUR,#0 ;小时计数单元清零
19: 0046 75 31 00 MOV MIN,#0 ;分钟计数单元清零
20: 0049 75 32 00 MOV SEC,#0 ;秒计数单元清零
21: 004C D2 8C SETB TR0 ;启动计数
22: 004E C2 AF LOOP: CLR EA ;关中断,避免读数时显示跳动
23: 0050 85 30 38 MOV BUF,HOUR ;存小时数到显示缓冲区
24: 0053 85 31 39 MOV BUF+1,MIN ;存分钟数到显示缓冲区
25: 0056 85 32 3A MOV BUF+2,SEC ;存秒数到显示缓冲区
26: 0059 D2 AF SETB EA ;开中断
27: 005B 12 00 60 LCALL DISP
28: 005E 80 EE SJMP LOOP
29: ;显示程序
30: ;将BUF单元的3字节BCD码送数码管显示
31: 0060 78 38 DISP: MOV R0,#BUF
32: 0062 7A 03 MOV R2,#3 ;共显示3个字节的BCD码
33: 0064 7B 01 MOV R3,#1 ;位码初值
34: 0066 E6 DISP1: MOV A,@R0
35: 0067 54 0F ANL A,#0FH
36: 0069 90 00 8F MOV DPTR,#DISP_TAB
37: 006C 93 MOVC A,@A+DPTR
38: 006D 54 7F ANL A,#7FH ;点亮末尾小数点以便于区分时间
39: 006F F5 80 MOV P0,A ;送段码
40: 0071 EB MOV A,R3
41: 0072 F5 A0 MOV P2,A
42: 0074 23 RL A
43: 0075 FB MOV R3,A
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0076 12 00 E8 LCALL DELAY ;延时1ms
45: 0079 E6 MOV A,@R0
46: 007A C4 SWAP A
47: 007B 54 0F ANL A,#0FH
48: 007D 90 00 8F MOV DPTR,#DISP_TAB
49: 0080 93 MOVC A,@A+DPTR
50: 0081 F5 80 MOV P0,A ;送段码
51: 0083 EB MOV A,R3
52: 0084 F5 A0 MOV P2,A
53: 0086 23 RL A
54: 0087 FB MOV R3,A
55: 0088 12 00 E8 LCALL DELAY
56: 008B 08 INC R0
57: 008C DA D8 DJNZ R2,DISP1
58: 008E 22 RET
59: 008F C0 F9 A4 B0 DISP_TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0D8H
0093 99 92 82 D8
60: 0097 80 90 88 83 DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
009B C6 A1 86 8E
009F FF
61: ;50ms定时中断服务程序
62: 00A0 C0 D0 TS: PUSH PSW
63: 00A2 C0 E0 PUSH ACC
64: 00A4 C0 83 PUSH DPH
65: 00A6 C0 82 PUSH DPL
66: 00A8 C2 8C CLR TR0
67: 00AA 75 8C 3C MOV TH0,#3CH
68: 00AD 75 8A B0 MOV TL0,#0B0H
69: 00B0 D2 8C SETB TR0
70: 00B2 D5 33 2A DJNZ COUNT,EXIT
71: 00B5 75 33 14 MOV COUNT,#20
72: 00B8 E5 32 MOV A,SEC
73: 00BA 24 01 ADD A,#1 ;秒加1
74: 00BC D4 DA A ;调整为BCD码
75: 00BD F5 32 MOV SEC,A ;存秒
76: 00BF B4 60 1D CJNE A,#60H,EXIT ;不到60秒则退出
77: 00C2 75 32 00 MOV SEC,#0 ;秒单元清零
78: 00C5 E5 31 MOV A,MIN
79: 00C7 24 01 ADD A,#1 ;分加1
80: 00C9 D4 DA A ;调整为BCD码
81: 00CA F5 31 MOV MIN,A ;存分
82: 00CC B4 60 10 CJNE A,#60H,EXIT ;不到60分则退出
83: 00CF 75 31 00 MOV MIN,#0
84: 00D2 E5 30 MOV A,HOUR
85: 00D4 24 01 ADD A,#1 ;小时加1
86: 00D6 D4 DA A ;调整为BCD码
87: 00D7 F5 30 MOV HOUR,A ;存小时
88: 00D9 B4 24 03 CJNE A,#24H,EXIT ;不到24小时则退出
89: 00DC 75 30 00 MOV HOUR,#0
90: 00DF D0 82 EXIT: POP DPL
91: 00E1 D0 83 POP DPH
92: 00E3 D0 E0 POP ACC
93: 00E5 D0 D0 POP PSW
94: 00E7 32 RETI
95: 00E8 7E FA DELAY: MOV R6,#250
96: 00EA 00 L1: NOP
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
97: 00EB 00 NOP
98: 00EC DE FC DJNZ R6,L1
99: 00EE 22 RET
100: END
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
BUF NUMBER 0038 5
COUNT NUMBER 0033 4
CY BIT D7
DELAY CODE 00E8 95
DISP CODE 0060 31
DISP1 CODE 0066 34
DISP_TAB CODE 008F 59
DPH DATA 83
DPL DATA 82
EA BIT AF
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXIT CODE 00DF 90
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
HOUR NUMBER 0030 1
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
L1 CODE 00EA 96
LOOP CODE 004E 22
MIN NUMBER 0031 2
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
SCON DATA 98
SEC NUMBER 0032 3
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
START CODE 0030 11
T0 BIT B4
T1 BIT B5
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
TS CODE 00A0 62
TXD BIT B1
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -