?? timerdemo.lst
字號:
ARM COMPILER V2.42, TIMERDEMO 12/01/06 09:38:31 PAGE 1
ARM COMPILER V2.42, COMPILATION OF MODULE TIMERDEMO
OBJECT MODULE PLACED IN TIMERDEMO.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe TIMERDEMO.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1 #include <LPC213x.H> // Philips Peripheral Registers
2 #include <LPC213xDEF.H> //ARM菜鳥HotPower創(chuàng)建定義文件
3 /*----------------------------------------------------
4 文 件 名: LPC213XDEF.H
5 創(chuàng) 建 人: ARM菜鳥 HotPower@126.com
6 創(chuàng) 建 日 期: 2005.7.23 0:38
7 最近修改日期: 2006.1.11 2:38
8 創(chuàng) 建 地 點 : 西安大雁塔村隊部
9 說 明 : 已經(jīng)過硬件調(diào)試
10 實 驗 項 目 : 蜂鳴器實驗
11 ------------------------------------------------------*/
12
13 /*-----------------------------------------
14 LED數(shù)碼字符定義
15 -------------------------------------------*/
16
17 //共陽極數(shù)碼管(左移)
18
19 #define LedSegA 0x01
20 #define LedSegB 0x02
21 #define LedSegC 0x04
22 #define LedSegD 0x08
23 #define LedSegE 0x10
24 #define LedSegF 0x20
25 #define LedSegG 0x40
26 #define LedSegH 0x80
27
28 //
29
30 //共陽極數(shù)碼管(右移)
31 /*
32 #define LedSegA 0x80
33 #define LedSegB 0x40
34 #define LedSegC 0x20
35 #define LedSegD 0x10
36 #define LedSegE 0x08
37 #define LedSegF 0x04
38 #define LedSegG 0x02
39 #define LedSegH 0x01
40 */
41 //
42
43 #define LedChar0 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF )
44 #define LedChar1 ( LedSegB + LedSegC )
45 #define LedChar2 (LedSegA + LedSegB + LedSegD + LedSegE + LedSegG)
46 #define LedChar3 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegG)
47 #define LedChar4 ( LedSegB + LedSegC + LedSegF + LedSegG)
48 #define LedChar5 (LedSegA + LedSegC + LedSegD + LedSegF + LedSegG)
49 #define LedChar6 (LedSegA + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
50 #define LedChar7 (LedSegA + LedSegB + LedSegC )
51 #define LedChar8 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
52 #define LedChar9 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegF + LedSegG)
53 #define LedCharA (LedSegA + LedSegB + LedSegC + LedSegE + LedSegF + LedSegG)
54 #define LedCharB ( LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
55 #define LedCharC (LedSegA + LedSegD + LedSegE + LedSegF )
56 #define LedCharD ( LedSegB + LedSegC + LedSegD + LedSegE + LedSegG)
57 #define LedCharE (LedSegA + LedSegD + LedSegE + LedSegF + LedSegG)
58 #define LedCharF (LedSegA + LedSegE + LedSegF + LedSegG)
59
ARM COMPILER V2.42, TIMERDEMO 12/01/06 09:38:31 PAGE 2
60 static const unsigned char LedTab[] =
61 {
62 ~LedChar0,
63 ~LedChar1,
64 ~LedChar2,
65 ~LedChar3,
66 ~LedChar4,
67 ~LedChar5,
68 ~LedChar6,
69 ~LedChar7,
70 ~LedChar8,
71 ~LedChar9,
72 ~LedCharA,
73 ~LedCharB,
74 ~LedCharC,
75 ~LedCharD,
76 ~LedCharE,
77 ~LedCharF
78 };
79
80 #define RCLK P0_29
81 //#define SCK0 P0_28 //<LPC213xDEF.H>已定義
82 //#define MOSI0 P0_25 //<LPC213xDEF.H>已定義
83 #define BEEP P0_7// P0.7控制蜂鳴器,低電平蜂鳴
84
85
86
87
88 #define LED1 P1_18//
89 #define LED2 P1_19//
90 #define LED3 P1_20//
91 #define LED4 P1_21//
92 #define LED5 P1_22//
93 #define LED6 P1_23//
94 #define LED7 P1_24//
95 #define LED8 P1_25//
96
97 /* System configuration .Fosc、Fcclk、Fcco、Fpclk must be defined */
98 /* 系統(tǒng)設置, Fosc、Fcclk、Fcco、Fpclk必須定義*/
99 #define Fosc 11059200 //Crystal frequence,10MHz~25MHz,should be the same a
-s actual status.
100 //應當與實際一至晶振頻率,10MHz~25MHz,應當與實際一至
101 #define Fcclk (Fosc * 4) //System frequence,should be (1~32)multiples of Fosc,
-and should be equal or less than 60MHz.
102 //系統(tǒng)頻率,必須為Fosc的整數(shù)倍(1~32),且<=60MHZ
103 #define Fcco (Fcclk * 4) //CCO frequence,should be 2、4、8、16 multiples of Fc
-clk, ranged from 156MHz to 320MHz.
104 //CCO頻率,必須為Fcclk的2、4、8、16倍,范圍為156MHz~320MHz
105 #define Fpclk (Fcclk / 4) * 1 //VPB clock frequence , must be 1、2、4 multiples of
-(Fcclk / 4).
106 //VPB時鐘頻率,只能為(Fcclk / 4)的1、2、4倍
107
108
109
110
111 //函數(shù)聲明
112 void Timer0Init(void);
113 void PortInit(void);
114 void VicIntSetup(void);
115
116 //函數(shù)聲明
117 void LedDisplay(unsigned char);
118 void MSPI_SendData(unsigned char);
119 void DelayNS (uint32 dly);
120
121
ARM COMPILER V2.42, TIMERDEMO 12/01/06 09:38:31 PAGE 3
122 /*
123 *********************************************************************************************************
124 ** 函數(shù)名稱 :IRQ_Timer0()
125 ** 函數(shù)功能 :定時器0中斷服務程序,取反LED9控制口。
126 ** 入口參數(shù) :無
127 ** 出口參數(shù) :無
128 *********************************************************************************************************
129 */
130
131 void IRQ_Timer0 (void) __irq
132 {
133 1 static unsigned char val = 0;
134 1 static unsigned int Count = 0;
135 1 if (Count < 2) {
136 2 Count ++;
137 2 }
138 1 else {
139 2 Count = 0;
140 2 IO1PIN ^= (1 << LED1)
141 2 | (1 << LED2)
142 2 | (1 << LED3)
143 2 | (1 << LED4)
144 2 | (1 << LED5)
145 2 | (1 << LED6)
146 2 | (1 << LED7)
147 2 | (1 << LED8);//LED交替閃爍
148 2 LedDisplay(LedTab[val]);
149 2 val ++;
150 2 val &= 0x0f;
151 2 }
152 1 IO0PIN ^= (1 << BEEP);//BEEP蜂鳴
153 1 T0IR = 0x01; /* 清除中斷標志 */
154 1 VICVectAddr = 0x00; /* 通知VIC中斷處理結(jié)束 */
155 1 }
156
157
158 void VicIntSetup(void)
159 {
160 1 /* 設置定時器0中斷IRQ */
161 1 VICIntSelect = 0x00; /* 所有中斷通道設置為IRQ中斷 */
162 1 VICVectCntl0 = 0x20 | 0x04; /* 設置定時器0中斷通道分配最高優(yōu)先級 */
163 1 VICVectAddr0 = (uint32)IRQ_Timer0; /* 設置中斷服務程序地址 */
164 1 VICIntEnable = 1 << 0x04; /* 使能定時器0中斷 */
165 1 }
166
167 void PortInit(void)
168 {
169 1 PINSEL0 = 0x00000000; // 設置管腳連接GPIO
170 1 PINSEL1 = 0x00000000; // 設置管腳連接GPIO
171 1 IO0DIR = 0x00000000; // 設置P0口為輸入
172 1 IO1DIR = 0x00000000; // 設置P1口為輸入
173 1
174 1 // PINSEL0 |= (P0_29_GPIO << P0_29_PINSEL) | (P0_4_SCK0 << P0_4_PINSEL) | (P0_6_MOSI0 << P0_6_PINSEL);
175 1 // PINSEL0 |= (P0_7_GPIO << P0_7_PINSEL);
176 1 /*
177 1 PINSEL1 |= (P1_18_GPIO << P1_18_PINSEL)
178 1 | (P1_19_GPIO << P1_19_PINSEL)
179 1 | (P1_20_GPIO << P1_20_PINSEL)
180 1 | (P1_21_GPIO << P1_21_PINSEL)
181 1 | (P1_22_GPIO << P1_22_PINSEL)
182 1 | (P1_23_GPIO << P1_23_PINSEL)
183 1 | (P1_24_GPIO << P1_24_PINSEL)
184 1 | (P1_25_GPIO << P1_25_PINSEL);
185 1 */
186 1
187 1
ARM COMPILER V2.42, TIMERDEMO 12/01/06 09:38:31 PAGE 4
188 1 IO0DIR |= (1 << BEEP); // 設置BEEP控制口為輸出
189 1
190 1 IO0DIR |= (1 << RCLK); // 設置RCLK控制口為輸出
191 1 IO0DIR |= (1 << SCK0); // 設置SCK0控制口為輸出
192 1 IO0DIR |= (1 << MOSI0); // 設置MOSI0控制口為輸出
193 1
194 1 IO1DIR |= (1 << LED1) // 設置LED1為輸出
195 1 | (1 << LED2) // 設置LED2為輸出
196 1 | (1 << LED3) // 設置LED3為輸出
197 1 | (1 << LED4) // 設置LED4為輸出
198 1 | (1 << LED5) // 設置LED5為輸出
199 1 | (1 << LED6) // 設置LED6為輸出
200 1 | (1 << LED7) // 設置LED7為輸出
201 1 | (1 << LED8); // 設置LED8為輸出
202 1
203 1 IO0PIN = (0 << RCLK)
204 1 | (1 << SCK0)
205 1 | (1 << MOSI0)
206 1 | (1 << BEEP);
207 1
208 1 IO1PIN = (1 << LED1)
209 1 | (1 << LED3)
210 1 | (1 << LED5)
211 1 | (1 << LED7);
212 1 }
213
214 void Timer0Init(void)
215 {
216 1 /* 定時器0初始化 */
217 1 T0TC = 0; /* 定時器設置為0 */
218 1 T0PR = 0; /* 時鐘不分頻 */
219 1 T0MCR = 0x03; /* 設置T0MR0匹配后復位T0TC,并產(chǎn)生中斷標志 */
220 1 T0MR0 = Fpclk / 2; /* 0.5秒鐘定時 */
221 1 T0TCR = 0x01; /* 啟動定時器 */
222 1 }
223
224 void LedDisplay(unsigned char data)
225 {
226 1 MSPI_SendData(data);
227 1 IO0SET = (1 << RCLK);
228 1 IO0CLR = (1 << RCLK);
229 1 }
230
231 void MSPI_SendData(unsigned char data)
232 {
233 1 unsigned char i;
234 1 for (i = 0; i < 8; i ++) {
235 2 IO0CLR = (1 << SCK0);
236 2 if (data & 0x80) {
237 3 IO0SET = (1 << MOSI0);
238 3 }
239 2 else {
240 3 IO0CLR = (1 << MOSI0);
241 3 }
242 2 data <<= 1;
243 2 IO0SET = (1 << SCK0);
244 2 }
245 1 }
246
247 /*
248 *********************************************************************************************************
249 ** 函數(shù)名稱 :DelayNS()
250 ** 函數(shù)功能 :長軟件延時
251 ** 入口參數(shù) :dly 延時參數(shù),值越大,延時越久
252 ** 出口參數(shù) :無
253 *********************************************************************************************************
ARM COMPILER V2.42, TIMERDEMO 12/01/06 09:38:31 PAGE 5
254 */
255 void DelayNS (uint32 dly)
256 {
257 1 uint32 i;
258 1
259 1 for ( ; dly>0; dly--)
260 1 for (i=0; i<50000; i++);
261 1 }
262
263 /*
264 *********************************************************************************************************
265 ** 函數(shù)名稱 :main()
266 ** 函數(shù)功能 :用P0.7控制BEEP,讓BEEP鳴叫。
267 ** 調(diào)試說明 :需將跳線JP5和LED短接。
268 *********************************************************************************************************
269 */
270 int main (void)
271 {
272 1 PortInit();
273 1 Timer0Init();
274 1 VicIntSetup();
275 1 while (1)
276 1 {
277 2 }
278 1 return 0;
279 1 }
ARM COMPILER V2.42, TIMERDEMO 12/01/06 09:38:31 PAGE 6
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC Timer0Init?T
PUBLIC PortInit?T
PUBLIC VicIntSetup?T
PUBLIC LedDisplay?T
PUBLIC LedDisplay?A
PUBLIC MSPI_SendData?T
PUBLIC DelayNS?T
PUBLIC IRQ_Timer0?A
PUBLIC main
*** DATA SEGMENT '?CON?TIMERDEMO':
00000000 LedTab:
00000000 BEGIN_INIT
00000000 C0 DB 0xC0
00000001 F9 DB 0xF9
00000002 A4 DB 0xA4
00000003 B0 DB 0xB0
00000004 99 DB 0x99
00000005 92 DB 0x92
00000006 82 DB 0x82
00000007 F8 DB 0xF8
00000008 80 DB 0x80
00000009 90 DB 0x90
0000000A 88 DB 0x88
0000000B 83 DB 0x83
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -