📄 time.lst
字号:
ARM COMPILER V2.51a, Time 20/04/06 21:55:22 PAGE 1
ARM COMPILER V2.51a, COMPILATION OF MODULE Time
OBJECT MODULE PLACED IN .\Obj\Time.obj
COMPILER INVOKED BY: f:\Keilarm\ARM\BIN\CA.exe Time.c THUMB OPTIMIZE(7,SPEED) BROWSE DEBUG PRINT(.\LST\TIME.LST) TABS(4)
- OBJECT(.\Obj\Time.obj)
stmt level source
1 /******************************************************************************/
2 /* This file is part of the uVision/ARM development tools */
3 /* Copyright KEIL ELEKTRONIK GmbH 2002-2004 */
4 /******************************************************************************/
5 /* */
6 /* TIME.C: Time Functions for 100Hz Clock Tick */
7 /* */
8 /******************************************************************************/
9
10 #include <LPC21XX.H> // LPC21XX Peripheral Registers
11 #include "Timer.h"
12
13
14 long timeval;
15
16 /* Timer Counter 0 Interrupt executes each 10ms @ 60 MHz CPU Clock */
17 void tc0 (void) __irq {
18 1 ++timeval;
19 1 T0IR = 1; // Clear interrupt flag
20 1 VICVectAddr = 0; // Acknowledge Interrupt
21 1 }
22
23
24 /* Setup the Timer Counter 0 Interrupt */
25 void init_timer (void) {
26 1 T0MR0 = 149999; // 10mSec = 150.000-1 counts
27 1 T0MCR = 3; // Interrupt and Reset on MR0
28 1 T0TCR = 1; // Timer0 Enable
29 1 VICVectAddr0 = (unsigned long)tc0; // set interrupt vector in 0
30 1 VICVectCntl0 = 0x20 | 4; // use it for Timer 0 Interrupt
31 1 VICIntEnable = 0x00000010; // Enable Timer0 Interrupt
32 1 }
ARM COMPILER V2.51a, Time 20/04/06 21:55:22 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** PUBLICS:
PUBLIC init_timer?T
PUBLIC tc0?A
PUBLIC timeval
*** DATA SEGMENT '?DT0?Time':
00000000 timeval:
00000000 DS 4
*** CODE SEGMENT '?PR?tc0?A?Time':
17: void tc0 (void) __irq {
00000000 E92D0003 STMDB R13!,{R0-R1}
18: ++timeval;
00000004 E5100000 LDR R0,=timeval ; timeval
00000008 E5901000 LDR R1,[R0,#0x0] ; timeval
0000000C E2811001 ADD R1,R1,#0x0001
00000010 E5801000 STR R1,[R0,#0x0] ; timeval
19: T0IR = 1; // Clear interrupt flag
00000014 E3A01001 MOV R1,#0x1
00000018 E5100000 LDR R0,=0xE0004000
0000001C E5801000 STR R1,[R0,#0x0]
20: VICVectAddr = 0; // Acknowledge Interrupt
00000020 E3A01000 MOV R1,#0x0
00000024 E5100000 LDR R0,=0xFFFFF030
00000028 E5801000 STR R1,[R0,#0x0]
21: }
0000002C E8BD0003 LDMIA R13!,{R0-R1}
00000030 E25EF004 SUBS R15,R14,#0x0004
00000034 ENDP ; 'tc0?A'
*** CODE SEGMENT '?PR?init_timer?T?Time':
26: T0MR0 = 149999; // 10mSec = 150.000-1 counts
00000000 4800 LDR R1,=0x249EF
00000002 4800 LDR R0,=0xE0004018
00000004 6001 STR R1,[R0,#0x0]
27: T0MCR = 3; // Interrupt and Reset on MR0
00000006 2103 MOV R1,#0x3
00000008 4800 LDR R0,=0xE0004014
0000000A 6001 STR R1,[R0,#0x0]
28: T0TCR = 1; // Timer0 Enable
0000000C 2101 MOV R1,#0x1
0000000E 4800 LDR R0,=0xE0004004
00000010 6001 STR R1,[R0,#0x0]
29: VICVectAddr0 = (unsigned long)tc0; // set interrupt vector in 0
00000012 4900 LDR R1,=tc0?A ; tc0?A
00000014 4800 LDR R0,=0xFFFFF100
00000016 6001 STR R1,[R0,#0x0]
30: VICVectCntl0 = 0x20 | 4; // use it for Timer 0 Interrupt
00000018 2124 MOV R1,#0x24
0000001A 4800 LDR R0,=0xFFFFF200
0000001C 6001 STR R1,[R0,#0x0]
31: VICIntEnable = 0x00000010; // Enable Timer0 Interrupt
0000001E 2110 MOV R1,#0x10
00000020 4800 LDR R0,=0xFFFFF010
00000022 6001 STR R1,[R0,#0x0]
32: }
00000024 4770 BX R14
00000026 ENDP ; 'init_timer?T'
Module Information Static
----------------------------------
code size = ------
data size = 4
const size = ------
ARM COMPILER V2.51a, Time 20/04/06 21:55:22 PAGE 3
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -