📄 main.lst
字号:
ARM COMPILER V2.00f, main 19/02/05 10:29:38 PAGE 1
ARM COMPILER V2.00f, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe main.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1 /************************************************************/
2 /* PROJECT NAME: SWI */
3 /* Project: LPC2100 Training course */
4 /* Engineer: T Martin tmartin@hitex.co.uk */
5 /* Filename: main.c */
6 /* Language: C */
7 /* Compiler: Keil ARM V2.00b */
8 /* Assembler: */
9 /* */
10 /************************************************************/
11 /* COPYRIGHT: Hitex UK Ltd 2005 */
12 /* LICENSE: THIS VERSION CREATED FOR FREE DISTRIBUTION */
13 /************************************************************/
14 /* Function: */
15 /* */
16 /* Example software interrupt for LPC2100 */
17 /* */
18 /* Demonstrates serving an SWI and running selected code */
19 /* */
20 /* Oscillator frequency 12.000 Mhz */
21 /* Target board Keil MCB21000 */
22 /************************************************************/
23
24
25
26
27 #include <LPC21xx.H>
28
29
30 void SWI_Call1(int pattern) __swi(8) //Software interrupt with passed parameters
31 {
32 1
33 1 IOCLR1 = 0x00FF0000; //set the leds
34 1 IOSET1 = pattern;
35 1 }
36
37 void SWI_Call2(void) __swi(9) //void call to software intterupt
38 {
39 1 IOCLR1 = 0x00FF0000; //write default pattern to the LEDs
40 1 IOSET1 = 0x00AA0000;
41 1 }
42
43
44 void main(void)
45 {
46 1 int pattern = 0x00550000;
47 1 IODIR1 = 0x00FF0000; //Set LED pins as outputs
48 1 IOCLR1 = 0x00FF0000; //Generate software interrupt
49 1
50 1 SWI_Call1(pattern); //call software interrupt
51 1
52 1 SWI_Call2(); //Call second software interrupt
53 1
54 1
55 1 while(1)
56 1 {
57 2 ; //Loop forever
58 2 }
59 1 }
ARM COMPILER V2.00f, main 19/02/05 10:29:38 PAGE 2
60
ARM COMPILER V2.00f, main 19/02/05 10:29:38 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC SWI_Call1?T
PUBLIC SWI_Call2?T
PUBLIC main
*** CODE SEGMENT '?PR?SWI_Call1?T?main':
30: void SWI_Call1(int pattern) __swi(8) //Software interrupt with passed parameters
00000000 ---- Variable 'pattern' assigned to Register 'R0' ----
33: IOCLR1 = 0x00FF0000; //set the leds
00000000 4800 LDR R2,=0xFF0000
00000002 4800 LDR R1,=0xE002801C
00000004 600A STR R2,[R1,#0x0]
34: IOSET1 = pattern;
00000006 1C01 MOV R1,R0 ; pattern
00000008 4800 LDR R0,=0xE0028014
0000000A 6001 STR R1,[R0,#0x0]
35: }
0000000C 4770 BX R14
0000000E ENDP ; 'SWI_Call1?T'
*** CODE SEGMENT '?PR?SWI_Call2?T?main':
39: IOCLR1 = 0x00FF0000; //write default pattern to the LEDs
00000000 4800 LDR R1,=0xFF0000
00000002 4800 LDR R0,=0xE002801C
00000004 6001 STR R1,[R0,#0x0]
40: IOSET1 = 0x00AA0000;
00000006 4800 LDR R1,=0xAA0000
00000008 4800 LDR R0,=0xE0028014
0000000A 6001 STR R1,[R0,#0x0]
41: }
0000000C 4770 BX R14
0000000E ENDP ; 'SWI_Call2?T'
*** CODE SEGMENT '?PR?main?main':
44: void main(void)
00000000 B500 PUSH {LR}
45: {
00000002 ; SCOPE-START
47: IODIR1 = 0x00FF0000; //Set LED pins as outputs
00000002 4800 LDR R1,=0xFF0000
00000004 4800 LDR R0,=0xE0028018
00000006 6001 STR R1,[R0,#0x0]
48: IOCLR1 = 0x00FF0000; //Generate software interrupt
00000008 4800 LDR R1,=0xFF0000
0000000A 4800 LDR R0,=0xE002801C
0000000C 6001 STR R1,[R0,#0x0]
50: SWI_Call1(pattern); //call software interrupt
0000000E 4800 LDR R0,=0x550000
00000010 DF08 SWI 0x8 ; SWI_Call1?T
52: SWI_Call2(); //Call second software interrupt
00000012 DF09 SWI 0x9 ; SWI_Call2?T
58: }
00000014 L_1:
00000014 E7FE B L_1 ; T=0x00000014
00000016 ; SCOPE-END
00000016 BC08 POP {R3}
00000018 4718 BX R3
0000001A ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
ARM COMPILER V2.00f, main 19/02/05 10:29:38 PAGE 4
data size = ------
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 + -