📄 main.lst
字号:
ARM COMPILER V0.07, main 09/07/04 13:38:27 PAGE 1
ARM COMPILER V0.07, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe main.c BROWSE DEBUG TABS(4)
stmt level source
1 /************************************************************/
2 /* PROJECT NAME: AtoD */
3 /* Project: LPC2100 Training course */
4 /* Engineer: T Martin tmartin@hitex.co.uk */
5 /* Filename: main.c */
6 /* Language: C */
7 /* Compiler: Keil ARM V1.3 */
8 /* Assembler: */
9 /* */
10 /************************************************************/
11 /* COPYRIGHT: Hitex UK Ltd 2004 */
12 /* LICENSE: THIS VERSION CREATED FOR FREE DISTRIBUTION */
13 /************************************************************/
14 /* Function: */
15 /* */
16 /* Example Discrete Fourier Transform */
17 /* */
18 /* Demonstrates Fourier transform */
19 /* */
20 /* Oscillator frequency 12.000 Mhz */
21 /* Target board Keil MCB2100 */
22 /************************************************************/
23
24 #include "lpc21xx.h"
25 #include <math.h>
26 unsigned val = 0;
27 float REX[256];
28 float IMX[256];
29 float MAG[256];
30 unsigned int I,IP,K,L,N,NM1,ND2,M,J,JM1,LE,LE2,UR,UI;
31 float TR,TI,SI,SR;
32 float PI =3.14159265;
33
34 int main(void)
35 {
36 1
37 1 for(I = 1;I<256;I++)
38 1 {
39 2 REX[I] = 0.5;
40 2 IMX[I] = 0;
41 2 }
42 1
43 1
44 1 VPBDIV = 0x02; //Set the Pclk to 30 Mhz
45 1 IODIR1 = 0x00FF0000; // P1.16..23 defined as Outputs
46 1 ADCR = 0x00270601; // Setup A/D: 10-bit AIN0 @ 3MHz
47 1 ADCR |= 0x01000000; // Start A/D Conversion
48 1
49 1 N = 512;
50 1 NM1 = N-1;
51 1 ND2 = N/2;
52 1 M = 9;
53 1 J = ND2;
54 1
55 1 for( I = 1;I<(N/2);I++)
56 1 {
57 2
58 2 if(I< J)
59 2 {
ARM COMPILER V0.07, main 09/07/04 13:38:27 PAGE 2
60 3 TR = REX[J];
61 3 TI = IMX[J];
62 3 REX[J] = REX[I];
63 3 IMX[J] = IMX[I];
64 3 REX[I] = TR;
65 3 IMX[I] = TI;
66 3 }
67 2 K = ND2;
68 2 while(K<=J)
69 2 {
70 3 J =J-K;
71 3 K = K/2;
72 3 }
73 2 J = J+K;
74 2 }
75 1
76 1 for(L = 1;L<=M;L++)
77 1 {
78 2 LE = pow(2,L);
79 2 LE2 = LE/2;
80 2 UR = 1;
81 2 UI = 0;
82 2 SR = cos(PI/LE2);
83 2 SI = -sin(PI/LE2);
84 2 for(J=1;J<=LE2;J++)
85 2 {
86 3 JM1 = J-1;
87 3 for(I=JM1;I<NM1;I = I + LE)
88 3 {
89 4 IP = I+LE2;
90 4 TR = REX[IP]*UR-IMX[IP]*UI;
91 4 TI = REX[IP]*UI+IMX[IP]*UI;
92 4 REX[IP]= REX[I]-TR;
93 4 IMX[IP]= IMX[I]-TI;
94 4 REX[I] = REX[I]+TR;
95 4 IMX[IP]= IMX[I]+TR;
96 4 }
97 3 TR = UR;
98 3 UR = TR*SR-UI*SI;
99 3 UI = TR*SI+UI*SR;
100 3
101 3 }
102 2 }
103 1
104 1
105 1
106 1
107 1
108 1 /*for (index = 0;index<(N-1);index++)
109 1 {
110 1 do
111 1 {
112 1 val = ADDR; // Read A/D Data Register
113 1 }
114 1 while ((val & 0x80000000) == 0); //Wait for the conversion to complete
115 1 XX[index] =(float) ((val >> 6) & 0x03FF); //Extract the A/D result
116 1 }
117 1 */
118 1
119 1 while(1)
120 1 {
121 2 ;
122 2 }
123 1
124 1 }
125
ARM COMPILER V0.07, main 09/07/04 13:38:27 PAGE 3
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -