📄 adc.lst
字号:
ARM COMPILER V2.20a, ADC 21/04/05 14:01:17 PAGE 1
ARM COMPILER V2.20a, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe ADC.c THUMB BROWSE DEBUG TABS(4)
stmt level source
1
2 #include <lpc22xx.h> /* LPC2200 definitions */
3 #include <stdio.h> /* standard I/O .h-file */
4 #define VREF 3
5
6 unsigned int val;
7
8
9 extern void init_serial (void);
10
11
12 int main(void) {
13 1
14 1 init_serial(); /* Initialize Serial Interface */
15 1
16 1
17 1 /* Setup the A/D converter */
18 1 IODIR1 = 0x00FF0000; /* P1.16..23 defined as Outputs */
19 1 VPBDIV = 0x02; /*Set the Pclk to 30 Mhz */
20 1 ADCR = 0x00210601; /* Setup A/D: 10-bit AIN0 @ 3MHz */
21 1
22 1
23 1 while(1) {
24 2
25 2 ADCR |= 0x01000000; /* Start A/D Conversion */
26 2 while ((ADDR & 0x80000000) == 0); /*Wait for the conversion to complete */
27 2 val = ((ADDR >> 6) & 0x03FF); /*Extract the A/D result */
28 2
29 2 printf ("Digital Value %4u = %01u.%04u Volts\r",
30 2 (unsigned) val,
31 2 (unsigned) (val * VREF) >> 10, /* Output Integer Portion */
32 2 (unsigned) ((val * VREF * 10000UL) >> 10UL) % 10000); /* Output Decimal Portion */
33 2
34 2 }
35 1
36 1 }
ARM COMPILER V2.20a, ADC 21/04/05 14:01:17 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (printf?T)
EXTERN CODE16 (init_serial?T)
EXTERN NUMBER (__startup)
EXTERN CODE16 (?C?UDIV?T)
*** PUBLICS:
PUBLIC main
PUBLIC val
*** DATA SEGMENT '?CON?ADC':
00000000 ??S_1:
00000000 DB 'Digital Value %4u = %01u.%04u Volts',0x0D
00000024 DB 0x00
*** DATA SEGMENT '?DT0?ADC':
00000000 val:
00000000 DS 4
*** CODE SEGMENT '?PR?main?ADC':
12: int main(void) {
00000000 B500 PUSH {LR}
14: init_serial(); /* Initialize Serial Interface */
00000002 F7FF BL init_serial?T ; T=0x0001 (1)
00000004 FFFD BL init_serial?T ; T=0x0001 (2)
18: IODIR1 = 0x00FF0000; /* P1.16..23 defined as Outputs */
00000006 4800 LDR R1,=0xFF0000
00000008 4800 LDR R0,=0xE0028018
0000000A 6001 STR R1,[R0,#0x0]
19: VPBDIV = 0x02; /*Set the Pclk to 30 Mhz */
0000000C 2102 MOV R1,#0x2
0000000E 4800 LDR R0,=0xE01FC100
00000010 7001 STRB R1,[R0,#0x0]
20: ADCR = 0x00210601; /* Setup A/D: 10-bit AIN0 @ 3MHz */
00000012 4800 LDR R1,=0x210601
00000014 4800 LDR R0,=0xE0034000
00000016 6001 STR R1,[R0,#0x0]
23: while(1) {
00000018 L_3:
25: ADCR |= 0x01000000; /* Start A/D Conversion */
00000018 4800 LDR R2,=0x1000000
0000001A 4800 LDR R0,=0xE0034000
0000001C 6801 LDR R1,[R0,#0x0]
0000001E 4311 ORR R1,R2
00000020 6001 STR R1,[R0,#0x0]
26: while ((ADDR & 0x80000000) == 0); /*Wait for the conversion to complete */
00000022 L_5:
00000022 4800 LDR R0,=0xE0034004
00000024 6800 LDR R0,[R0,#0x0]
00000026 4800 LDR R1,=0x80000000
00000028 4208 TST R0,R1
0000002A D0FA BEQ L_5 ; T=0x00000022
27: val = ((ADDR >> 6) & 0x03FF); /*Extract the A/D result */
0000002C 4800 LDR R0,=0xE0034004
0000002E 6801 LDR R1,[R0,#0x0]
00000030 0989 LSR R1,R1,#0x6
00000032 4800 LDR R0,=0x3FF
00000034 4001 AND R1,R0
00000036 4800 LDR R0,=val ; val
00000038 6001 STR R1,[R0,#0x0] ; val
32: (unsigned) ((val * VREF * 10000UL) >> 10UL) % 10000); /* Output Decimal Portion */
0000003A 4800 LDR R0,=val ; val
0000003C 6804 LDR R4,[R0,#0x0] ; val
0000003E 2203 MOV R2,#0x3
ARM COMPILER V2.20a, ADC 21/04/05 14:01:17 PAGE 3
00000040 4362 MUL R2,R4
00000042 1C10 MOV R0,R2
00000044 4800 LDR R1,=0x2710
00000046 4348 MUL R0,R1
00000048 0A80 LSR R0,R0,#0xA
0000004A 4800 LDR R1,=0x2710
0000004C F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
0000004E FFD8 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
00000050 1C01 MOV R1,R0
00000052 1C0B MOV R3,R1
00000054 0A92 LSR R2,R2,#0xA
00000056 4800 LDR R0,=??S_1 ; ??S_1
00000058 1C21 MOV R1,R4
0000005A F7FF BL printf?T ; T=0x0001 (1)
0000005C FFD1 BL printf?T ; T=0x0001 (2)
34: }
0000005E E7DB B L_3 ; T=0x00000018
36: }
00000060 BC08 POP {R3}
00000062 4718 BX R3
00000064 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = 4
const size = 37
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -