📄 main.lst
字号:
ARM COMPILER V2.50a, main 26/02/08 10:37:47 PAGE 1
ARM COMPILER V2.50a, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe main.c THUMB OPTIMIZE(7,SPEED) BROWSE DEBUG TABS(4)
stmt level source
1 /************************************************************/
2 /* PROJECT NAME: GPIO */
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.0b */
8 /* Assembler: */
9 /* */
10 /************************************************************/
11 /* COPYRIGHT: Hitex UK Ltd 2005 */
12 /* LICENSE: THIS VERSION CREATED FOR FREE DISTRIBUTION */
13 /************************************************************/
14 /* Function: */
15 /* */
16 /* Example */
17 /* */
18 /* Demonstrates Use of the LPC2100 GPIO */
19 /* */
20 /* Oscillator frequency 12.000 Mhz */
21 /* Target board Keil MCB21000 */
22 /************************************************************/
23
24 #include <LPC21xx.H>
25
26 void ChangeGPIOPinState(unsigned int state);
27
28
29 int main(void)
30 {
31 1 unsigned int delay;
32 1 unsigned int flasher = 0x00010000; // define locals
33 1
34 1 IODIR1 = 0x00FF0000; // set all ports to output
35 1
36 1 while(1)
37 1 {
38 2
39 2 for(delay = 0;delay<0xA0000;delay++) //simple delay loop
40 2 {
41 3 ;
42 3 }
43 2
44 2 ChangeGPIOPinState(flasher); //set the state of the ports
45 2 flasher = flasher << 1; //shift the active led
46 2 if(flasher & 0x01000000)
47 2 flasher = 0x00010000; //Increment flasher led and test for overflow
48 2
49 2 }
50 1 }
51
52 void ChangeGPIOPinState(unsigned int state)
53 {
54 1 IOCLR1 = ~state; //clear output pins
55 1 IOSET1 = state; //set output pins
56 1 }
57
58
ARM COMPILER V2.50a, main 26/02/08 10:37:47 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC ChangeGPIOPinState?T
PUBLIC main
*** CODE SEGMENT '?PR?main?main':
29: int main(void)
00000000 B500 PUSH {LR}
30: {
00000002 ; SCOPE-START
32: unsigned int flasher = 0x00010000; // define locals
00000002 4800 LDR R4,=0x10000
00000004 ---- Variable 'flasher' assigned to Register 'R4' ----
34: IODIR1 = 0x00FF0000; // set all ports to output
00000004 4800 LDR R1,=0xFF0000
00000006 4800 LDR R0,=0xE0028018
00000008 6001 STR R1,[R0,#0x0]
39: for(delay = 0;delay<0xA0000;delay++) //simple delay loop
0000000A L_9:
0000000A 2000 MOV R0,#0x0
0000000C ---- Variable 'delay' assigned to Register 'R0' ----
42: }
0000000C L_5:
0000000C 3001 ADD R0,#0x1
0000000E 1C01 MOV R1,R0 ; delay
00000010 4800 LDR R2,=0xA0000
00000012 4291 CMP R1,R2 ; delay
00000014 D3FA BCC L_5 ; T=0x0000000C
44: ChangeGPIOPinState(flasher); //set the state of the ports
00000016 1C20 MOV R0,R4 ; flasher
00000018 F7FF BL ChangeGPIOPinState?T ; T=0x0001 (1)
0000001A FFF2 BL ChangeGPIOPinState?T ; T=0x0001 (2)
45: flasher = flasher << 1; //shift the active led
0000001C 0064 LSL R4,R4,#0x1 ; flasher
46: if(flasher & 0x01000000)
0000001E 1C20 MOV R0,R4 ; flasher
00000020 4800 LDR R1,=0x1000000
00000022 4208 TST R0,R1 ; flasher
00000024 D0F1 BEQ L_9 ; T=0x0000000A
47: flasher = 0x00010000; //Increment flasher led and test for overflow
00000026 4800 LDR R4,=0x10000
49: }
00000028 E7EF B L_9 ; T=0x0000000A
0000002A ; SCOPE-END
50: }
0000002A BC08 POP {R3}
0000002C 4718 BX R3
0000002E ENDP ; 'main'
*** CODE SEGMENT '?PR?ChangeGPIOPinState?T?main':
52: void ChangeGPIOPinState(unsigned int state)
00000000 ---- Variable 'state' assigned to Register 'R0' ----
54: IOCLR1 = ~state; //clear output pins
00000000 1C02 MOV R2,R0 ; state
00000002 43D2 MVN R2,R2
00000004 4800 LDR R1,=0xE002801C
00000006 600A STR R2,[R1,#0x0]
55: IOSET1 = state; //set output pins
00000008 1C01 MOV R1,R0 ; state
0000000A 4800 LDR R0,=0xE0028014
0000000C 6001 STR R1,[R0,#0x0]
56: }
ARM COMPILER V2.50a, main 26/02/08 10:37:47 PAGE 3
0000000E 4770 BX R14
00000010 ENDP ; 'ChangeGPIOPinState?T'
Module Information Static
----------------------------------
code size = ------
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 + -