📄 blinky.lst
字号:
ARM COMPILER V2.51a, Blinky 20/04/06 21:55:22 PAGE 1
ARM COMPILER V2.51a, COMPILATION OF MODULE Blinky
OBJECT MODULE PLACED IN .\Obj\Blinky.obj
COMPILER INVOKED BY: f:\Keilarm\ARM\BIN\CA.exe Blinky.c THUMB OPTIMIZE(7,SPEED) BROWSE DEBUG PRINT(.\LST\BLINKY.LST) TAB
-S(4) OBJECT(.\Obj\Blinky.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 /* BLINKY.C: LED Flasher */
7 /* */
8 /******************************************************************************/
9
10 #include <LPC21xx.H> /* LPC21xx definitions */
11 #include "Timer.h"
12
13 extern long volatile timeval;
14
15
16 void wait (void) { /* wait function */
17 1 unsigned long i;
18 1
19 1 i = timeval;
20 1 while ((i + 10) != timeval); /* wait 100ms */
21 1 }
22
23
24 int main (void) {
25 1 unsigned int j; /* LED var */
26 1
27 1 IODIR1 = 0xFF0000; /* P1.16..23 defined as Outputs */
28 1
29 1 init_timer();
30 1
31 1 while (1) { /* Loop forever */
32 2 for (j = 0x010000; j < 0x800000; j <<= 1) { /* Blink LED 0,1,2,3,4,5,6 */
33 3 IOSET1 = j; /* Turn on LED */
34 3 wait (); /* call wait function */
35 3 IOCLR1 = j; /* Turn off LED */
36 3 }
37 2 for (j = 0x800000; j > 0x010000; j >>=1 ) { /* Blink LED 7,6,5,4,3,2,1 */
38 3 IOSET1 = j; /* Turn on LED */
39 3 wait (); /* call wait function */
40 3 IOCLR1 = j; /* Turn off LED */
41 3 }
42 2 }
43 1 }
ARM COMPILER V2.51a, Blinky 20/04/06 21:55:22 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (init_timer?T)
EXTERN DATA (timeval)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC wait?T
PUBLIC main
*** CODE SEGMENT '?PR?wait?T?Blinky':
16: void wait (void) { /* wait function */
00000000 ; SCOPE-START
19: i = timeval;
00000000 4800 LDR R0,=timeval ; timeval
00000002 6800 LDR R0,[R0,#0x0] ; timeval
00000004 ---- Variable 'i' assigned to Register 'R0' ----
20: while ((i + 10) != timeval); /* wait 100ms */
00000004 L_1:
00000004 4800 LDR R1,=timeval ; timeval
00000006 680A LDR R2,[R1,#0x0] ; timeval
00000008 1C01 MOV R1,R0 ; i
0000000A 310A ADD R1,#0xA
0000000C 4291 CMP R1,R2
0000000E D1F9 BNE L_1 ; T=0x00000004
00000010 ; SCOPE-END
21: }
00000010 4770 BX R14
00000012 ENDP ; 'wait?T'
*** CODE SEGMENT '?PR?main?Blinky':
24: int main (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
27: IODIR1 = 0xFF0000; /* P1.16..23 defined as Outputs */
00000002 4800 LDR R1,=0xFF0000
00000004 4800 LDR R0,=0xE0028018
00000006 6001 STR R1,[R0,#0x0]
29: init_timer();
00000008 F7FF BL init_timer?T ; T=0x0001 (1)
0000000A FFFA BL init_timer?T ; T=0x0001 (2)
32: for (j = 0x010000; j < 0x800000; j <<= 1) { /* Blink LED 0,1,2,3,4,5,6 */
0000000C L_13:
0000000C 4800 LDR R3,=0x10000
0000000E ---- Variable 'j' assigned to Register 'R3' ----
0000000E L_12:
33: IOSET1 = j; /* Turn on LED */
0000000E 1C19 MOV R1,R3 ; j
00000010 4800 LDR R0,=0xE0028014
00000012 6001 STR R1,[R0,#0x0]
34: wait (); /* call wait function */
00000014 F7FF BL wait?T ; T=0x0001 (1)
00000016 FFF4 BL wait?T ; T=0x0001 (2)
35: IOCLR1 = j; /* Turn off LED */
00000018 1C19 MOV R1,R3 ; j
0000001A 4800 LDR R0,=0xE002801C
0000001C 6001 STR R1,[R0,#0x0]
36: }
0000001E 005B LSL R3,R3,#0x1 ; j
00000020 1C19 MOV R1,R3 ; j
00000022 4800 LDR R0,=0x800000
00000024 4281 CMP R1,R0 ; j
00000026 D3F2 BCC L_12 ; T=0x0000000E
37: for (j = 0x800000; j > 0x010000; j >>=1 ) { /* Blink LED 7,6,5,4,3,2,1 */
00000028 1C03 MOV R3,R0 ; j
ARM COMPILER V2.51a, Blinky 20/04/06 21:55:22 PAGE 3
0000002A L_17:
38: IOSET1 = j; /* Turn on LED */
0000002A 1C19 MOV R1,R3 ; j
0000002C 4800 LDR R0,=0xE0028014
0000002E 6001 STR R1,[R0,#0x0]
39: wait (); /* call wait function */
00000030 F7FF BL wait?T ; T=0x0001 (1)
00000032 FFE6 BL wait?T ; T=0x0001 (2)
40: IOCLR1 = j; /* Turn off LED */
00000034 1C19 MOV R1,R3 ; j
00000036 4800 LDR R0,=0xE002801C
00000038 6001 STR R1,[R0,#0x0]
41: }
0000003A 085B LSR R3,R3,#0x1 ; j
0000003C 1C18 MOV R0,R3 ; j
0000003E 4800 LDR R1,=0x10000
00000040 4288 CMP R0,R1 ; j
00000042 D8F2 BHI L_17 ; T=0x0000002A
42: }
00000044 E7E2 B L_13 ; T=0x0000000C
00000046 ; SCOPE-END
43: }
00000046 BC08 POP {R3}
00000048 4718 BX R3
0000004A ENDP ; 'main'
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 + -