?? blinky.lst
字號(hào):
ARM COMPILER V2.00f, Blinky 19/02/05 09:29:13 PAGE 1
ARM COMPILER V2.00f, COMPILATION OF MODULE Blinky
OBJECT MODULE PLACED IN Blinky.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe Blinky.c THUMB OPTIMIZE(7,SPEED) BROWSE DEBUG TABS(4)
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 <stdio.h> /* standard I/O .h-file */
11 #include <LPC21xx.H> /* LPC21xx definitions */
12
13 extern void init_serial (void); /* Initialize Serial Interface */
14
15
16 void sendhex (int hex) { /* Write Hex Digit to Serial Port */
17 1 if (hex > 9) putchar('A' + (hex - 10));
18 1 else putchar('0' + hex);
19 1 }
20
21 void sendstr (char *p) { /* Write string */
22 1 while (*p) {
23 2 putchar (*p++);
24 2 }
25 1 }
26
27
28 void delay (void) { /* Delay function */
29 1 unsigned int cnt;
30 1 unsigned int val;
31 1
32 1 ADCR |= 0x01000000; /* Start A/D Conversion */
33 1 do {
34 2 val = ADDR; /* Read A/D Data Register */
35 2 } while ((val & 0x80000000) == 0); /* Wait for end of A/D Conversion */
36 1 ADCR &= ~0x01000000; /* Stop A/D Conversion */
37 1 val = (val >> 6) & 0x03FF; /* Extract AIN0 Value */
38 1
39 1 sendstr ("\nAIN0 Result = 0x"); /* Output A/D Conversion Result */
40 1 sendhex((val >> 8) & 0x0F); /* Write 1. Hex Digit */
41 1 sendhex((val >> 4) & 0x0F); /* Write 2. Hex Digit */
42 1 sendhex (val & 0x0F); /* Write 3. Hex Digit */
43 1
44 1 val = (val >> 2) << 12; /* Adjust Delay Value */
45 1 for (cnt = 0; cnt < val; cnt++); /* Delay */
46 1 }
47
48
49 int main (void) {
50 1 unsigned int n;
51 1
52 1 IODIR1 = 0x00FF0000; /* P1.16..23 defined as Outputs */
53 1 ADCR = 0x002E0401; /* Setup A/D: 10-bit AIN0 @ 3MHz */
54 1 init_serial(); /* Initialize Serial Interface */
55 1
56 1 while (1) { /* Loop forever */
57 2 for (n = 0x00010000; n <= 0x00800000; n <<= 1) {
58 3 /* Blink LED 0, 1, 2, 3, 4, 5, 6, 7 */
59 3 IOSET1 = n; /* Turn on LED */
ARM COMPILER V2.00f, Blinky 19/02/05 09:29:13 PAGE 2
60 3 delay(); /* Delay */
61 3 IOCLR1 = 0x00FF0000; /* Turn off LEDs */
62 3 }
63 2 }
64 1 }
ARM COMPILER V2.00f, Blinky 19/02/05 09:29:13 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (putchar?T)
EXTERN CODE16 (init_serial?T)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC sendhex?T
PUBLIC sendstr?T
PUBLIC delay?T
PUBLIC main
*** DATA SEGMENT '?CON?Blinky':
00000000 ??S_1:
00000000 DB 0x0A,'AIN0 Result = 0x',0x00
*** CODE SEGMENT '?PR?sendhex?T?Blinky':
16: void sendhex (int hex) { /* Write Hex Digit to Serial Port */
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; hex
00000004 ---- Variable 'hex' assigned to Register 'R4' ----
17: if (hex > 9) putchar('A' + (hex - 10));
00000004 2C09 CMP R4,#0x9 ; hex
00000006 DD04 BLE L_1 ; T=0x00000012
00000008 1C20 MOV R0,R4 ; hex
0000000A 3037 ADD R0,#0x37
0000000C F7FF BL putchar?T ; T=0x0001 (1)
0000000E FFF8 BL putchar?T ; T=0x0001 (2)
00000012 E002 B L_2 ; T=0x0000001A
00000014 L_1:
18: else putchar('0' + hex);
00000014 1C20 MOV R0,R4 ; hex
00000016 3030 ADD R0,#0x30
00000018 F7FF BL putchar?T ; T=0x0001 (1)
0000001A FFF2 BL putchar?T ; T=0x0001 (2)
0000001E L_2:
19: }
0000001E BC10 POP {R4}
00000020 BC08 POP {R3}
00000022 4718 BX R3
00000024 ENDP ; 'sendhex?T'
*** CODE SEGMENT '?PR?sendstr?T?Blinky':
21: void sendstr (char *p) { /* Write string */
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; p
00000004 ---- Variable 'p' assigned to Register 'R4' ----
22: while (*p) {
00000004 E004 B L_3 ; T=0x00000010
00000006 L_5:
23: putchar (*p++);
00000006 1C20 MOV R0,R4 ; p
00000008 3401 ADD R4,#0x1
0000000A 7800 LDRB R0,[R0,#0x0] ; p
0000000C F7FF BL putchar?T ; T=0x0001 (1)
0000000E FFF8 BL putchar?T ; T=0x0001 (2)
24: }
00000012 L_3:
00000012 7820 LDRB R0,[R4,#0x0] ; p
00000014 2800 CMP R0,#0x0 ; p
00000016 D1F6 BNE L_5 ; T=0x00000006
25: }
00000018 BC10 POP {R4}
0000001A BC08 POP {R3}
0000001C 4718 BX R3
0000001E ENDP ; 'sendstr?T'
ARM COMPILER V2.00f, Blinky 19/02/05 09:29:13 PAGE 4
*** CODE SEGMENT '?PR?delay?T?Blinky':
28: void delay (void) { /* Delay function */
00000000 B510 PUSH {R4,LR}
00000002 ; SCOPE-START
32: ADCR |= 0x01000000; /* Start A/D Conversion */
00000002 4800 LDR R2,=0x1000000
00000004 4800 LDR R0,=0xE0034000
00000006 6801 LDR R1,[R0,#0x0]
00000008 4311 ORR R1,R2
0000000A 6001 STR R1,[R0,#0x0]
33: do {
0000000C L_7:
34: val = ADDR; /* Read A/D Data Register */
0000000C 4800 LDR R0,=0xE0034004
0000000E 6804 LDR R4,[R0,#0x0]
00000010 ---- Variable 'val' assigned to Register 'R4' ----
35: } while ((val & 0x80000000) == 0); /* Wait for end of A/D Conversion */
00000010 4800 LDR R0,=0x80000000
00000012 4204 TST R4,R0 ; val
00000014 D0FA BEQ L_7 ; T=0x0000000C
36: ADCR &= ~0x01000000; /* Stop A/D Conversion */
00000016 4800 LDR R2,=0x1000000
00000018 4800 LDR R0,=0xE0034000
0000001A 6801 LDR R1,[R0,#0x0]
0000001C 4391 BIC R1,R2
0000001E 6001 STR R1,[R0,#0x0]
37: val = (val >> 6) & 0x03FF; /* Extract AIN0 Value */
00000020 09A4 LSR R4,R4,#0x6 ; val
00000022 4800 LDR R0,=0x3FF
00000024 4004 AND R4,R0
39: sendstr ("\nAIN0 Result = 0x"); /* Output A/D Conversion Result */
00000026 4800 LDR R0,=??S_1 ; ??S_1
00000028 F7FF BL sendstr?T ; T=0x0001 (1)
0000002A FFEA BL sendstr?T ; T=0x0001 (2)
40: sendhex((val >> 8) & 0x0F); /* Write 1. Hex Digit */
0000002E 0A20 LSR R0,R4,#0x8 ; val
00000030 210F MOV R1,#0xF
00000032 4008 AND R0,R1
00000034 F7FF BL sendhex?T ; T=0x0001 (1)
00000036 FFE4 BL sendhex?T ; T=0x0001 (2)
41: sendhex((val >> 4) & 0x0F); /* Write 2. Hex Digit */
0000003A 0920 LSR R0,R4,#0x4 ; val
0000003C 210F MOV R1,#0xF
0000003E 4008 AND R0,R1
00000040 F7FF BL sendhex?T ; T=0x0001 (1)
00000042 FFDE BL sendhex?T ; T=0x0001 (2)
42: sendhex (val & 0x0F); /* Write 3. Hex Digit */
00000046 200F MOV R0,#0xF
00000048 4020 AND R0,R4 ; val
0000004A F7FF BL sendhex?T ; T=0x0001 (1)
0000004C FFD9 BL sendhex?T ; T=0x0001 (2)
44: val = (val >> 2) << 12; /* Adjust Delay Value */
00000050 08A4 LSR R4,R4,#0x2 ; val
00000052 0324 LSL R4,R4,#0xC ; val
45: for (cnt = 0; cnt < val; cnt++); /* Delay */
00000054 2000 MOV R0,#0x0
00000056 ---- Variable 'cnt' assigned to Register 'R0' ----
00000056 E7FC B L_13 ; T=0x00000052
00000058 L_11:
00000058 3001 ADD R0,#0x1
0000005A L_13:
0000005A 42A0 CMP R0,R4 ; cnt
0000005C D3FC BCC L_11 ; T=0x00000058
0000005E ; SCOPE-END
46: }
0000005E BC10 POP {R4}
ARM COMPILER V2.00f, Blinky 19/02/05 09:29:13 PAGE 5
00000060 BC08 POP {R3}
00000062 4718 BX R3
00000064 ENDP ; 'delay?T'
*** CODE SEGMENT '?PR?main?Blinky':
49: int main (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
52: IODIR1 = 0x00FF0000; /* P1.16..23 defined as Outputs */
00000002 4800 LDR R1,=0xFF0000
00000004 4800 LDR R0,=0xE0028018
00000006 6001 STR R1,[R0,#0x0]
53: ADCR = 0x002E0401; /* Setup A/D: 10-bit AIN0 @ 3MHz */
00000008 4800 LDR R1,=0x2E0401
0000000A 4800 LDR R0,=0xE0034000
0000000C 6001 STR R1,[R0,#0x0]
54: init_serial(); /* Initialize Serial Interface */
0000000E F7FF BL init_serial?T ; T=0x0001 (1)
00000010 FFF7 BL init_serial?T ; T=0x0001 (2)
57: for (n = 0x00010000; n <= 0x00800000; n <<= 1) {
00000014 L_24:
00000014 4800 LDR R4,=0x10000
00000016 ---- Variable 'n' assigned to Register 'R4' ----
00000016 L_23:
59: IOSET1 = n; /* Turn on LED */
00000016 1C21 MOV R1,R4 ; n
00000018 4800 LDR R0,=0xE0028014
0000001A 6001 STR R1,[R0,#0x0]
60: delay(); /* Delay */
0000001C F7FF BL delay?T ; T=0x0001 (1)
0000001E FFF0 BL delay?T ; T=0x0001 (2)
61: IOCLR1 = 0x00FF0000; /* Turn off LEDs */
00000022 4800 LDR R1,=0xFF0000
00000024 4800 LDR R0,=0xE002801C
00000026 6001 STR R1,[R0,#0x0]
62: }
00000028 0064 LSL R4,R4,#0x1 ; n
0000002A 4800 LDR R0,=0x800000
0000002C 4284 CMP R4,R0 ; n
0000002E D9F2 BLS L_23 ; T=0x00000016
63: }
00000030 E7F0 B L_24 ; T=0x00000014
00000032 ; SCOPE-END
00000032 BC08 POP {R3}
00000034 4718 BX R3
00000036 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = 18
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -