📄 digital clock (2).lst
字号:
A51 MACRO ASSEMBLER DIGITAL_CLOCK__2_ 08/28/2006 21:12:59 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN Digital Clock (2).OBJ
ASSEMBLER INVOKED BY: E:\Program Files\Keil\C51\BIN\A51.EXE Digital Clock (2).asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0090 1 S_SET BIT P1.0 ;数字钟秒控制位
0091 2 M_SET BIT P1.1 ;分钟控制位
0092 3 H_SET BIT P1.2 ;小时控制位
0030 4 SECOND EQU 30H
0031 5 MINUTE EQU 31H
0032 6 HOUR EQU 32H
0034 7 TCNT EQU 34H
0000 8 ORG 00H
0000 800C 9 SJMP START
000B 10 ORG 0BH
000B 020091 11 LJMP INT_T0
000E 900132 12 START: MOV DPTR,#TABLE
0011 753200 13 MOV HOUR,#0 ;初始化
0014 753100 14 MOV MINUTE,#0
0017 753000 15 MOV SECOND,#0
001A 753400 16 MOV TCNT,#0
001D 758901 17 MOV TMOD,#01H
0020 758C3C 18 MOV TH0,#(65536-50000)/256 ;定时50毫秒
0023 758AB0 19 MOV TL0,#(65536-50000)MOD 256
0026 75A882 20 MOV IE,#82H
0029 D28C 21 SETB TR0
22 ;****************************************************
23 ;判断是否有控制键按下,是哪一个键按下
002B 1200C9 24 A1: LCALL DISPLAY
002E 309009 25 JNB S_SET,S1
0031 309119 26 JNB M_SET,S2
0034 309229 27 JNB H_SET,S3
0037 02002B 28 LJMP A1
003A 12013C 29 S1: LCALL DELAY ;去抖动
003D 2090EB 30 JB S_SET,A1
31
0040 0530 32 INC SECOND ;秒值加1
0042 E530 33 MOV A,SECOND
0044 B43C32 34 CJNE A,#60,J0 ;判断是否加到60秒
0047 753000 35 MOV SECOND,#0
004A 020053 36 LJMP K1
004D 12013C 37 S2: LCALL DELAY
0050 2091D8 38 JB M_SET,A1
39
0053 0531 40 K1: INC MINUTE ;分钟值加1
0055 E531 41 MOV A,MINUTE
0057 B43C27 42 CJNE A,#60,J1 ;判断是否加到60分
005A 753100 43 MOV MINUTE,#0
005D 020066 44 LJMP K2
0060 12013C 45 S3: LCALL DELAY
0063 2092C5 46 JB H_SET,A1
47
0066 0532 48 K2: INC HOUR ;小时值加1
0068 E532 49 MOV A,HOUR
006A B4181C 50 CJNE A,#24,J2 ;判断是否加到24小时
006D 753200 51 MOV HOUR,#0
0070 753100 52 MOV MINUTE,#0
0073 753000 53 MOV SECOND,#0
0076 02002B 54 LJMP A1
55 ;****************************************************
56 ;等待按键抬起
0079 2090AF 57 J0: JB S_SET,A1
007C 1200C9 58 LCALL DISPLAY
A51 MACRO ASSEMBLER DIGITAL_CLOCK__2_ 08/28/2006 21:12:59 PAGE 2
007F 80F8 59 SJMP J0
0081 2091A7 60 J1: JB M_SET,A1
0084 1200C9 61 LCALL DISPLAY
0087 80F8 62 SJMP J1
0089 20929F 63 J2: JB H_SET,A1
008C 1200C9 64 LCALL DISPLAY
008F 80F8 65 SJMP J2
66 ;***********************************************
67 ;定时器中断服务程序,对秒,分钟和小时的计数
0091 758C3C 68 INT_T0: MOV TH0,#(65536-50000)/256
0094 758AB0 69 MOV TL0,#(65536-50000)MOD 256
0097 0534 70 INC TCNT
0099 E534 71 MOV A,TCNT
009B B4142A 72 CJNE A,#20,RETUNE ;计时1秒
009E 0530 73 INC SECOND
00A0 753400 74 MOV TCNT,#0
00A3 E530 75 MOV A,SECOND
00A5 B43C20 76 CJNE A,#60,RETUNE
00A8 0531 77 INC MINUTE
00AA 753000 78 MOV SECOND,#0
00AD E531 79 MOV A,MINUTE
00AF B43C16 80 CJNE A,#60,RETUNE
00B2 0532 81 INC HOUR
00B4 753100 82 MOV MINUTE,#0
00B7 E532 83 MOV A,HOUR
00B9 B4180C 84 CJNE A,#24,RETUNE
00BC 753200 85 MOV HOUR,#0
00BF 753100 86 MOV MINUTE,#0
00C2 753000 87 MOV SECOND,#0
00C5 753400 88 MOV TCNT,#0
00C8 32 89 RETUNE: RETI
90 ;******************************************
91 ;显示控制子程序
00C9 E530 92 DISPLAY:MOV A,SECOND ;显示秒
00CB 75F00A 93 MOV B,#10
00CE 84 94 DIV AB
00CF C2B6 95 CLR P3.6
00D1 93 96 MOVC A,@A+DPTR
00D2 F580 97 MOV P0,A
00D4 12013C 98 LCALL DELAY
00D7 D2B6 99 SETB P3.6
00D9 E5F0 100 MOV A,B
00DB C2B7 101 CLR P3.7
00DD 93 102 MOVC A,@A+DPTR
00DE F580 103 MOV P0,A
00E0 12013C 104 LCALL DELAY
00E3 D2B7 105 SETB P3.7
106
00E5 C2B5 107 CLR P3.5
00E7 758040 108 MOV P0,#40H ;显示分隔符
00EA 12013C 109 LCALL DELAY
00ED D2B5 110 SETB P3.5
111
00EF E531 112 MOV A,MINUTE ;显示分钟
00F1 75F00A 113 MOV B,#10
00F4 84 114 DIV AB
00F5 C2B3 115 CLR P3.3
00F7 93 116 MOVC A,@A+DPTR
00F8 F580 117 MOV P0,A
00FA 12013C 118 LCALL DELAY
00FD D2B3 119 SETB P3.3
00FF E5F0 120 MOV A,B
0101 C2B4 121 CLR P3.4
0103 93 122 MOVC A,@A+DPTR
0104 F580 123 MOV P0,A
0106 12013C 124 LCALL DELAY
A51 MACRO ASSEMBLER DIGITAL_CLOCK__2_ 08/28/2006 21:12:59 PAGE 3
0109 D2B4 125 SETB P3.4
126
010B C2B2 127 CLR P3.2
010D 758040 128 MOV P0,#40H ;显示分隔符
0110 12013C 129 LCALL DELAY
0113 D2B2 130 SETB P3.2
131
0115 E532 132 MOV A,HOUR ;显示小时
0117 75F00A 133 MOV B,#10
011A 84 134 DIV AB
011B C2B0 135 CLR P3.0
011D 93 136 MOVC A,@A+DPTR
011E F580 137 MOV P0,A
0120 12013C 138 LCALL DELAY
0123 D2B0 139 SETB P3.0
0125 E5F0 140 MOV A,B
0127 C2B1 141 CLR P3.1
0129 93 142 MOVC A,@A+DPTR
012A F580 143 MOV P0,A
012C 12013C 144 LCALL DELAY
012F D2B1 145 SETB P3.1
0131 22 146 RET
147
0132 3F065B4F 148 TABLE: DB 3FH,06H,5BH,4FH,66H
0136 66
0137 6D7D077F 149 DB 6DH,7DH,07H,7FH,6FH
013B 6F
013C 7E0A 150 DELAY: MOV R6,#10
013E 7FFA 151 D1: MOV R7,#250
0140 DFFE 152 DJNZ R7,$
0142 DEFA 153 DJNZ R6,D1
0144 22 154 RET
155
156 END
A51 MACRO ASSEMBLER DIGITAL_CLOCK__2_ 08/28/2006 21:12:59 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
A1 . . . . . . . . C ADDR 002BH A
B. . . . . . . . . D ADDR 00F0H A
D1 . . . . . . . . C ADDR 013EH A
DELAY. . . . . . . C ADDR 013CH A
DISPLAY. . . . . . C ADDR 00C9H A
HOUR . . . . . . . N NUMB 0032H A
H_SET. . . . . . . B ADDR 0090H.2 A
IE . . . . . . . . D ADDR 00A8H A
INT_T0 . . . . . . C ADDR 0091H A
J0 . . . . . . . . C ADDR 0079H A
J1 . . . . . . . . C ADDR 0081H A
J2 . . . . . . . . C ADDR 0089H A
K1 . . . . . . . . C ADDR 0053H A
K2 . . . . . . . . C ADDR 0066H A
MINUTE . . . . . . N NUMB 0031H A
M_SET. . . . . . . B ADDR 0090H.1 A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
RETUNE . . . . . . C ADDR 00C8H A
S1 . . . . . . . . C ADDR 003AH A
S2 . . . . . . . . C ADDR 004DH A
S3 . . . . . . . . C ADDR 0060H A
SECOND . . . . . . N NUMB 0030H A
START. . . . . . . C ADDR 000EH A
S_SET. . . . . . . B ADDR 0090H.0 A
TABLE. . . . . . . C ADDR 0132H A
TCNT . . . . . . . N NUMB 0034H A
TH0. . . . . . . . D ADDR 008CH A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -