📄 adc.lst
字号:
ARM COMPILER V2.32a, adc 20/03/09 16:23:40 PAGE 1
ARM COMPILER V2.32a, 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 #include <LPC21xx.H> // LPC21xx definitions
2 extern void UART0_Init(void);
3 extern void Print(unsigned short w);
4 extern void PrintString(const char *s);
5 static unsigned short ADC_Read(unsigned char ch)
6 {
7 1 unsigned int i;
8 1 ADCR = 0x00200300 | ch; // Init ADC (Pclk = 12MHz) and select channel
9 1 ADCR |= 0x01000000; // Start A/D Conversion
10 1 do
11 1 {
12 2 i = ADDR; // Read A/D Data Register
13 2 } while ((i & 0x80000000) == 0); // Wait for end of A/D Conversion
14 1 return (i >> 6) & 0x03FF; // bit 6:15 is 10 bit AD value
15 1 }
16 int main(void)
17 {
18 1 UART0_Init(); // Initialize UART0
19 1 PrintString("\nLPC2129 ADC test:\n\n"
20 1 "AIN0 AIN1 AIN2 AIN3\n\n");
21 1 while (1)
22 1 {
23 2 Print(ADC_Read(1)); // convert and print channel AIN0
24 2 PrintString(" ");
25 2 Print(ADC_Read(2)); // convert and print channel AIN1
26 2 PrintString(" ");
27 2 Print(ADC_Read(4)); // convert and print channel AIN2
28 2 PrintString(" ");
29 2 Print(ADC_Read(8)); // convert and print channel AIN3
30 2 PrintString("\r");
31 2 }
32 1 }
ARM COMPILER V2.32a, adc 20/03/09 16:23:40 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE16 (UART0_Init?T)
EXTERN CODE16 (Print?T)
EXTERN CODE16 (PrintString?T)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC main
*** DATA SEGMENT '?CON?adc':
00000000 ??S_3:
00000000 DB 0x0D,0x00
00000002 ??S_2:
00000002 DB ' ',0x00
00000004 ??S_1:
00000004 DB 0x0A,'LPC2129 ADC test:',0x0A,0x0A,'AIN'
0000001B DB '0 AIN1 AIN2 AIN3',0x0A,0x0A,0x00
*** CODE SEGMENT '?PR?ADC_Read?T?adc':
5: static unsigned short ADC_Read(unsigned char ch)
00000000 1C01 MOV R1,R0 ; ch
00000002 ---- Variable 'ch' assigned to Register 'R1' ----
6: {
00000002 ; SCOPE-START
8: ADCR = 0x00200300 | ch; // Init ADC (Pclk = 12MHz) and select channel
00000002 1C08 MOV R0,R1 ; ch
00000004 0601 LSL R1,R0,#0x18 ; ch
00000006 0E09 LSR R1,R1,#0x18
00000008 4800 LDR R0,=0x200300
0000000A 4301 ORR R1,R0
0000000C 4800 LDR R0,=0xE0034000
0000000E 6001 STR R1,[R0,#0x0]
9: ADCR |= 0x01000000; // Start A/D Conversion
00000010 4800 LDR R2,=0x1000000
00000012 4800 LDR R0,=0xE0034000
00000014 6801 LDR R1,[R0,#0x0]
00000016 4311 ORR R1,R2
00000018 6001 STR R1,[R0,#0x0]
10: do
0000001A L_1:
12: i = ADDR; // Read A/D Data Register
0000001A 4800 LDR R0,=0xE0034004
0000001C 6801 LDR R1,[R0,#0x0]
0000001E ---- Variable 'i' assigned to Register 'R1' ----
13: } while ((i & 0x80000000) == 0); // Wait for end of A/D Conversion
0000001E 1C08 MOV R0,R1 ; i
00000020 4800 LDR R2,=0x80000000
00000022 4210 TST R0,R2 ; i
00000024 D0F9 BEQ L_1 ; T=0x0000001A
14: return (i >> 6) & 0x03FF; // bit 6:15 is 10 bit AD value
00000026 1C08 MOV R0,R1 ; i
00000028 0980 LSR R0,R0,#0x6 ; i
0000002A 4800 LDR R1,=0x3FF
0000002C 4008 AND R0,R1
0000002E ; SCOPE-END
15: }
0000002E 4770 BX R14
00000030 ENDP ; 'ADC_Read?T'
*** CODE SEGMENT '?PR?main?adc':
16: int main(void)
00000000 B500 PUSH {LR}
18: UART0_Init(); // Initialize UART0
00000002 F7FF BL UART0_Init?T ; T=0x0001 (1)
00000004 FFFD BL UART0_Init?T ; T=0x0001 (2)
ARM COMPILER V2.32a, adc 20/03/09 16:23:40 PAGE 3
19: PrintString("\nLPC2129 ADC test:\n\n"
00000006 4800 LDR R0,=??S_1 ; ??S_1
00000008 F7FF BL PrintString?T ; T=0x0001 (1)
0000000A FFFA BL PrintString?T ; T=0x0001 (2)
21: while (1)
0000000C L_8:
23: Print(ADC_Read(1)); // convert and print channel AIN0
0000000C 2001 MOV R0,#0x1
0000000E F7FF BL ADC_Read?T ; T=0x0001 (1)
00000010 FFF7 BL ADC_Read?T ; T=0x0001 (2)
00000012 0400 LSL R0,R0,#0x10 ; ADC_Read?T
00000014 0C00 LSR R0,R0,#0x10
00000016 F7FF BL Print?T ; T=0x0001 (1)
00000018 FFF3 BL Print?T ; T=0x0001 (2)
24: PrintString(" ");
0000001A 4800 LDR R0,=??S_2 ; ??S_2
0000001C F7FF BL PrintString?T ; T=0x0001 (1)
0000001E FFF0 BL PrintString?T ; T=0x0001 (2)
25: Print(ADC_Read(2)); // convert and print channel AIN1
00000020 2002 MOV R0,#0x2
00000022 F7FF BL ADC_Read?T ; T=0x0001 (1)
00000024 FFED BL ADC_Read?T ; T=0x0001 (2)
00000026 0400 LSL R0,R0,#0x10 ; ADC_Read?T
00000028 0C00 LSR R0,R0,#0x10
0000002A F7FF BL Print?T ; T=0x0001 (1)
0000002C FFE9 BL Print?T ; T=0x0001 (2)
26: PrintString(" ");
0000002E 4800 LDR R0,=??S_2 ; ??S_2
00000030 F7FF BL PrintString?T ; T=0x0001 (1)
00000032 FFE6 BL PrintString?T ; T=0x0001 (2)
27: Print(ADC_Read(4)); // convert and print channel AIN2
00000034 2004 MOV R0,#0x4
00000036 F7FF BL ADC_Read?T ; T=0x0001 (1)
00000038 FFE3 BL ADC_Read?T ; T=0x0001 (2)
0000003A 0400 LSL R0,R0,#0x10 ; ADC_Read?T
0000003C 0C00 LSR R0,R0,#0x10
0000003E F7FF BL Print?T ; T=0x0001 (1)
00000040 FFDF BL Print?T ; T=0x0001 (2)
28: PrintString(" ");
00000042 4800 LDR R0,=??S_2 ; ??S_2
00000044 F7FF BL PrintString?T ; T=0x0001 (1)
00000046 FFDC BL PrintString?T ; T=0x0001 (2)
29: Print(ADC_Read(8)); // convert and print channel AIN3
00000048 2008 MOV R0,#0x8
0000004A F7FF BL ADC_Read?T ; T=0x0001 (1)
0000004C FFD9 BL ADC_Read?T ; T=0x0001 (2)
0000004E 0400 LSL R0,R0,#0x10 ; ADC_Read?T
00000050 0C00 LSR R0,R0,#0x10
00000052 F7FF BL Print?T ; T=0x0001 (1)
00000054 FFD5 BL Print?T ; T=0x0001 (2)
30: PrintString("\r");
00000056 4800 LDR R0,=??S_3 ; ??S_3
00000058 F7FF BL PrintString?T ; T=0x0001 (1)
0000005A FFD2 BL PrintString?T ; T=0x0001 (2)
31: }
0000005C E7D6 B L_8 ; T=0x0000000C
0000005E BC08 POP {R3}
00000060 4718 BX R3
00000062 ENDP ; 'main'
Module Information Static
----------------------------------
code size = ------
data size = ------
const size = 46
End of Module Information.
ARM COMPILER V2.32a, adc 20/03/09 16:23:40 PAGE 4
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -