?? clock.lst
字號:
A51 MACRO ASSEMBLER CLOCK 05/10/2008 19:49:21 PAGE 1
MACRO ASSEMBLER A51 V8.00
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
0003 +1 8 N_DISP EQU 3 ;要顯示的總位數
+1 9
+1 10
+1 11 ;----- IO 定義 -------
0090 +1 12 SEG_OUT EQU P1
+1 13
00B3 +1 14 POS_CONTL1 BIT P3.3
00B4 +1 15 POS_CONTL2 BIT P3.4
+1 16
+1 17
+1 18 ;------ 位尋址區 -------
0020 +1 19 CUR_DISP EQU 20H ;變量,當前要顯示的位(0~7)
+1 20
+1 21 ;------ 通用RAM -------
0030 +1 22 TIME_10mS EQU 30H ;計時變量
0031 +1 23 TIME_1S EQU 31H
0032 +1 24 TIME_10S EQU 32H
+1 25
0033 +1 26 LIGHT EQU 33H ;間隔符號值
+1 27
+1 28 ;----- 定義3個顯示內容 ---------
0032 +1 29 DIS0 EQU TIME_10S
0031 +1 30 DIS1 EQU TIME_1S
0033 +1 31 DIS2 EQU LIGHT
+1 32
+1 33 MOV_BIT MACRO BIT1, BIT2
+1 34 MOV C, BIT2
+1 35 MOV BIT1, C
+1 36 ENDM
37
0000 38 ORG 0000H
0000 020030 39 LJMP START
40
0003 41 ORG 0003H ;恢復紅燈開啟時的初始狀態
0003 01D6 42 JMP RESTART
43
000B 44 ORG 000BH ;1mS中斷,動態掃描
000B 019D 45 JMP INT_T0
46
001B 47 ORG 001BH ;10mS 中斷,完成時鐘計時
001B 8046 48 JMP INT_T1
49
0030 50 ORG 0030H
0030 51 START:
52 ;--------- 重置堆棧 -------------
0030 758160 53 MOV SP, #60H
54
55 ;---------- 端口初始化 -----------
0033 7590FF 56 MOV P1, #0FFH
0036 75B0FF 57 MOV P3, #0FFH
58
A51 MACRO ASSEMBLER CLOCK 05/10/2008 19:49:21 PAGE 2
59 ;--------- 定時器設置 ------------
0039 758919 60 MOV TMOD, #19h ;設置C/T0 和 C/T1 工作在方式 1(16bit 定時)
003C 758A18 61 MOV TL0, #DATA_TL0 ;初值
003F 758CFD 62 MOV TH0, #DATA_TH0
0042 758BF8 63 MOV TL1, #DATA_TL1
0045 758DD8 64 MOV TH1, #DATA_TH1
0048 D28C 65 SETB TR0 ;啟動
004A D28E 66 SETB TR1
67
68 ;--------- 中斷設置 -------------
004C 75B801 69 MOV IP, #00000001B ; 外部中斷0為高優先級
004F 75A88B 70 MOV IE, #10001011B ; 開放C/T0、C/T1、外部中斷0中斷
71
72
73 ;--------- 變量初始化 ------------
0052 753064 74 MOV TIME_10mS, #100 ;計時變量
0055 753109 75 MOV TIME_1S, #9
0058 753201 76 MOV TIME_10S, #1
77
005B 752000 78 MOV CUR_DISP, #0 ;顯示位
005E 75330B 79 MOV LIGHT, #11 ;顯示空格“-”的值
80
0061 80FE 81 MAINLOOP: JMP MAINLOOP ;主循環
82
83
84 ;-------- 10mS中斷,計時 ----------
0063 C0D0 85 INT_T1: PUSH PSW ;保護現場
0065 C0E0 86 PUSH ACC
87
0067 758BF8 88 MOV TL1, #DATA_TL1 ;重置初值
006A 758DD8 89 MOV TH1, #DATA_TH1
90
006D D53028 91 DJNZ TIME_10mS, EXIT_T1
92
0070 753064 93 MOV TIME_10mS, #100 ;每1S
0073 1531 94 DEC TIME_1S
0075 E531 95 MOV A, TIME_1S
0077 B4FF1E 96 CJNE A, #-1, EXIT_T1
97
007A 753109 98 MOV TIME_1S, #9 ;每10S
007D 1532 99 DEC TIME_10S
007F E532 100 MOV A, TIME_10S
0081 B4FF14 101 CJNE A, #-1, EXIT_T1
102
103
0084 E533 104 MOV A, LIGHT
0086 B40B03 105 CJNE A, #11, AAA
0089 B40A07 106 CJNE A, #10, BBB
008C 0533 107 AAA: INC LIGHT
008E 753201 108 MOV TIME_10S, #1
0091 8005 109 JMP EXIT_T1
0093 1533 110 BBB: DEC LIGHT
0095 753202 111 MOV TIME_10S, #2
112
0098 D0E0 113 EXIT_T1: POP ACC ;恢復現場
009A D0D0 114 POP PSW
009C 32 115 RETI
116
117 ;-------- 1mS中斷,動態掃描 ----------
009D C0D0 118 INT_T0: PUSH PSW ; 保護現場
009F C0E0 119 PUSH ACC
00A1 C083 120 PUSH DPH
00A3 C082 121 PUSH DPL
00A5 D2D3 122 SETB RS0 ; 選擇工作寄存器1
123
00A7 758A18 124 MOV TL0, #DATA_TL0 ; 重置 T0 初值
A51 MACRO ASSEMBLER CLOCK 05/10/2008 19:49:21 PAGE 3
00AA 758CFD 125 MOV TH0, #DATA_TH0
126
127 MOV_BIT POS_CONTL1, CUR_DISP.0 ;輸出位選
130 MOV_BIT POS_CONTL2, CUR_DISP.1
133
00B5 E520 134 MOV A, CUR_DISP ;輸出段選
00B7 9000F6 135 MOV DPTR, #TAB_DIS ;計算段顯示內容的地址
00BA 93 136 MOVC A, @A+DPTR ; A= 在該位上要顯示內容的地址
137
00BB F8 138 MOV R0, A
00BC E6 139 MOV A, @R0 ; A= 在該位要顯示內容的值
140
00BD 9000EA 141 MOV DPTR, #TAB_CODE
00C0 93 142 MOVC A, @A+DPTR ; A= 要顯示內容的段碼
00C1 F590 143 MOV SEG_OUT, A ;段顯輸出
144
00C3 0520 145 INC CUR_DISP ;計算下次(1mS后)要顯示的位
00C5 E520 146 MOV A, CUR_DISP
00C7 B40303 147 CJNE A, #N_DISP, EXIT_T0
00CA 752000 148 MOV CUR_DISP, #0
149
00CD D082 150 EXIT_T0: POP DPL
00CF D083 151 POP DPH
00D1 D0E0 152 POP ACC
00D3 D0D0 153 POP PSW ;恢復現場
00D5 32 154 RETI
155
156 ;----------- 復位 ------------
00D6 C0D0 157 RESTART: PUSH PSW ;保護現場
00D8 C0E0 158 PUSH ACC
159
00DA 753109 160 MOV TIME_1S, #9
00DD 753201 161 MOV TIME_10S, #1
00E0 75330B 162 MOV LIGHT, #11
163
00E3 D0E0 164 POP ACC ;恢復現場
00E5 D0D0 165 POP PSW
00E7 D28C 166 SETB TR0
00E9 32 167 RETI
168
00EA 169 TAB_CODE:
00EA C0 170 DB 0C0H ;0 0 0
00EB F9 171 DB 0F9H ;1 1 1
00EC A4 172 DB 0A4H ;2 2 2
00ED B0 173 DB 0B0H ;3 3 3
00EE 99 174 DB 099H ;4 4 4
00EF 92 175 DB 092H ;5 5 5
00F0 82 176 DB 082H ;6 6 6
00F1 F8 177 DB 0F8H ;7 7 7
00F2 80 178 DB 080H ;8 8 8
00F3 98 179 DB 098H ;9 9 9
00F4 FF 180 DB 0FFH ;綠燈 10
00F5 80 181 DB 080H ;紅燈 11
182
00F6 183 TAB_DIS:
00F6 32 184 DB DIS0
00F7 31 185 DB DIS1
00F8 33 186 DB DIS2
187
188 END
A51 MACRO ASSEMBLER CLOCK 05/10/2008 19:49:21 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
AAA. . . . . . . . C ADDR 008CH A
ACC. . . . . . . . D ADDR 00E0H A
BBB. . . . . . . . C ADDR 0093H 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 0032H A
DIS1 . . . . . . . N NUMB 0031H A
DIS2 . . . . . . . N NUMB 0033H A
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
EXIT_T0. . . . . . C ADDR 00CDH A
EXIT_T1. . . . . . C ADDR 0098H A
IE . . . . . . . . D ADDR 00A8H A
INT_T0 . . . . . . C ADDR 009DH A
INT_T1 . . . . . . C ADDR 0063H A
IP . . . . . . . . D ADDR 00B8H A
LIGHT. . . . . . . N NUMB 0033H A
MAINLOOP . . . . . C ADDR 0061H A
N_DISP . . . . . . N NUMB 0003H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
POS_CONTL1 . . . . B ADDR 00B0H.3 A
POS_CONTL2 . . . . B ADDR 00B0H.4 A
PSW. . . . . . . . D ADDR 00D0H A
RESTART. . . . . . C ADDR 00D6H A
RS0. . . . . . . . B ADDR 00D0H.3 A
SEG_OUT. . . . . . D ADDR 0090H A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 0030H A
TAB_CODE . . . . . C ADDR 00EAH A
TAB_DIS. . . . . . C ADDR 00F6H A
TH0. . . . . . . . D ADDR 008CH A
TH1. . . . . . . . D ADDR 008DH A
TIME_10MS. . . . . N NUMB 0030H A
TIME_10S . . . . . N NUMB 0032H 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 + -