📄 timer.lst
字号:
ARM COMPILER V2.53, timer 23/07/06 16:59:03 PAGE 1
ARM COMPILER V2.53, COMPILATION OF MODULE timer
OBJECT MODULE PLACED IN timer.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe driver\timer.c THUMB WARNINGLEVEL(3) OPTIMIZE(8,SPEED) DEBUG PRINT(.\TIMER.L
-ST) TABS(4) OBJECT(timer.obj)
stmt level source
1 /*------------------------------------------------------------
2 FILE NAME : timer.c
3 DESCRIPTION : timer of bs1084 arm firmware.
4 VERSION : 0.0.1 (c)aureole
5 AUTHOR : Aureole
6 CREATE DATE : 07.22.2006
7 MODIFY DATE : 00.00.2006
8 LOGS :---\
9
10 -
11 -0.0.0 ----. 07.22.2006 create
12 --------------------------------------------------------------*/
13
14
15 //-----------------include files-------------------------//
16 #include "..\include\arm.h"
17 #include "..\include\config.h"
18 #include "..\include\timer.h"
19
20
21 //-----------------function prototype--------------------//
22 void initialize_timer0(void);
23 void timer0_interrupt(void) __irq;
24 void disable_interrupt(void);
25 void enable_interrupt(void);
26
27
28
29 //-----------------variable area-------------------------//
30 unsigned int counter=0;
31 unsigned long int vic_bak;
32
33
34
35 //-----------------Function area-------------------------//
36 /*-------------------------------------------------------
37 NAME : timer0_interrupt
38 ENTRY TYPE: void
39 RETURN TYPE: int
40 PURPOSE : ---
41 VERSION : 0.0.1
42 DESCRIPTION:
43 CREATE DATE: ---
44 LOGS :---\
45
46
47 1.first create. 07.22.2006
48 --------------------------------------------------------*/
49 void irq_timer0(void) __irq
50 {
51 1 counter++;
52 1 T0IR=0x01; //清除中断标志;
53 1 VICVectAddr=0x0; //通知VIC 中断处理结束;
54 1 }
55
56 /*-------------------------------------------------------
57 NAME : initialize_timer
58 ENTRY TYPE: void
ARM COMPILER V2.53, timer 23/07/06 16:59:03 PAGE 2
59 RETURN TYPE: int
60 PURPOSE : ---
61 VERSION : 0.0.1
62 DESCRIPTION:
63 CREATE DATE: ---
64 LOGS :---\
65
66
67 1.first create. 07.22.2006
68 --------------------------------------------------------*/
69 void initialize_timer0(void)
70 {
71 1
72 1 T0CTCR=0x00; //timer0 -> timer
73 1 T0PR=0; //不分频
74 1 T0MCR=0x03;
75 1 T0MR0=Fcclk*0.00001; //定时 10 us
76 1 disable_timer0();
77 1
78 1 //Set IRQ
79 1
80 1 VICIntSelect = 0x00000000;
81 1 VICVectCntl1 = 0x20 | 0x04;
82 1 VICVectAddr1 = (unsigned long int)irq_timer0;
83 1 VICIntEnable |= 1 << 0x04;
84 1 }
85
86 /*-------------------------------------------------------
87 NAME : disable_interrupt
88 ENTRY TYPE: void
89 RETURN TYPE: int
90 PURPOSE : 关外设中断
91 VERSION : 0.0.1
92 DESCRIPTION:
93 CREATE DATE: ---
94 LOGS :---\
95
96
97 1.first create. 07.23.2006
98 --------------------------------------------------------*/
99
100 void disable_interrupt(void)
101 {
102 1
103 1 vic_bak=VICIntEnable;
104 1
105 1 VICIntEnClr=vic_bak;
106 1 }
107 /*-------------------------------------------------------
108 NAME : enable_interrupt
109 ENTRY TYPE: void
110 RETURN TYPE: int
111 PURPOSE : 开外设中断
112 VERSION : 0.0.1
113 DESCRIPTION: 必须与关外设中断配合使用
114 CREATE DATE: ---
115 LOGS :---\
116
117
118 1.first create. 07.23.2006
119 --------------------------------------------------------*/
120 void enable_interrupt(void)
121 {
122 1 VICIntEnable=vic_bak;
123 1 }
ARM COMPILER V2.53, timer 23/07/06 16:59:03 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** PUBLICS:
PUBLIC initialize_timer0?T
PUBLIC enable_interrupt?T
PUBLIC disable_interrupt?T
PUBLIC irq_timer0?A
PUBLIC counter
PUBLIC vic_bak
*** DATA SEGMENT '?DT0?timer':
00000000 counter:
00000000 BEGIN_INIT
00000000 00000000 DD 0x0
00000004 END_INIT
00000004 vic_bak:
00000004 DS 4
*** CODE SEGMENT '?PR?irq_timer0?A?timer':
49: void irq_timer0(void) __irq
00000000 E92D0003 STMDB R13!,{R0-R1}
51: counter++;
00000004 E5100000 LDR R0,=counter ; counter
00000008 E5901000 LDR R1,[R0,#0x0] ; counter
0000000C E2811001 ADD R1,R1,#0x0001
00000010 E5801000 STR R1,[R0,#0x0] ; counter
52: T0IR=0x01; //清除中断标志;
00000014 E3A01001 MOV R1,#0x1
00000018 E5100000 LDR R0,=0xE0004000
0000001C E5801000 STR R1,[R0,#0x0]
53: VICVectAddr=0x0; //通知VIC 中断处理结束;
00000020 E3A01000 MOV R1,#0x0
00000024 E5100000 LDR R0,=0xFFFFF030
00000028 E5801000 STR R1,[R0,#0x0]
54: }
0000002C E8BD0003 LDMIA R13!,{R0-R1}
00000030 E25EF004 SUBS R15,R14,#0x0004
00000034 ENDP ; 'irq_timer0?A'
*** CODE SEGMENT '?PR?initialize_timer0?T?timer':
72: T0CTCR=0x00; //timer0 -> timer
00000000 2100 MOV R1,#0x0
00000002 4800 LDR R0,=0xE0004070
00000004 6001 STR R1,[R0,#0x0]
73: T0PR=0; //不分频
00000006 4800 LDR R0,=0xE000400C
00000008 6001 STR R1,[R0,#0x0]
74: T0MCR=0x03;
0000000A 2203 MOV R2,#0x3
0000000C 4800 LDR R0,=0xE0004014
0000000E 6002 STR R2,[R0,#0x0]
75: T0MR0=Fcclk*0.00001; //定时 10 us
00000010 4A8A LDR R2,=0x228
00000012 4800 LDR R0,=0xE0004018
00000014 6002 STR R2,[R0,#0x0]
76: disable_timer0();
00000016 4800 LDR R0,=0xE0004004
00000018 6001 STR R1,[R0,#0x0]
80: VICIntSelect = 0x00000000;
0000001A 4800 LDR R0,=0xFFFFF00C
0000001C 6001 STR R1,[R0,#0x0]
81: VICVectCntl1 = 0x20 | 0x04;
0000001E 2124 MOV R1,#0x24
00000020 4800 LDR R0,=0xFFFFF204
00000022 6001 STR R1,[R0,#0x0]
82: VICVectAddr1 = (unsigned long int)irq_timer0;
ARM COMPILER V2.53, timer 23/07/06 16:59:03 PAGE 4
00000024 4900 LDR R1,=irq_timer0?A ; irq_timer0?A
00000026 4800 LDR R0,=0xFFFFF104
00000028 6001 STR R1,[R0,#0x0]
83: VICIntEnable |= 1 << 0x04;
0000002A 2210 MOV R2,#0x10
0000002C 4800 LDR R0,=0xFFFFF010
0000002E 6801 LDR R1,[R0,#0x0]
00000030 4311 ORR R1,R2
00000032 6001 STR R1,[R0,#0x0]
84: }
00000034 4770 BX R14
00000036 ENDP ; 'initialize_timer0?T'
*** CODE SEGMENT '?PR?disable_interrupt?T?timer':
103: vic_bak=VICIntEnable;
00000000 4800 LDR R0,=0xFFFFF010
00000002 6801 LDR R1,[R0,#0x0]
00000004 4800 LDR R0,=vic_bak ; vic_bak
00000006 6001 STR R1,[R0,#0x0] ; vic_bak
105: VICIntEnClr=vic_bak;
00000008 4800 LDR R0,=vic_bak ; vic_bak
0000000A 6801 LDR R1,[R0,#0x0] ; vic_bak
0000000C 4800 LDR R0,=0xFFFFF014
0000000E 6001 STR R1,[R0,#0x0]
106: }
00000010 4770 BX R14
00000012 ENDP ; 'disable_interrupt?T'
*** CODE SEGMENT '?PR?enable_interrupt?T?timer':
122: VICIntEnable=vic_bak;
00000000 4800 LDR R0,=vic_bak ; vic_bak
00000002 6801 LDR R1,[R0,#0x0] ; vic_bak
00000004 4800 LDR R0,=0xFFFFF010
00000006 6001 STR R1,[R0,#0x0]
123: }
00000008 4770 BX R14
0000000A ENDP ; 'enable_interrupt?T'
Module Information Static
----------------------------------
code size = ------
data size = 8
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -