📄 main.c
字号:
#include <c8051f020.h>
#include <math.h>
float xdata datar[129];
float xdata datai[129];
float xdata w[32];
//float FFT(float datar[],float datai[],float w[])
float FFT(void)
{unsigned int x0,x1,x2,x3,x4,x5,x6;
unsigned int L ,j,k,b,p,xx,i;
float TR,TI,temp;
for(i=0;i<128;i++)
{x0=x1=x2=x3=x4=x5=x6=0;
x0=i&0x01;x1=(i/2)&0x01;x2=(i/4)&0x01;
x3=(i/8)&0x01;x4=(i/16)&0x01;x5=(i/32)&0x01;x6=(i/64)&0x01;
xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6;
datai[xx]=datar[i];
}
for(i=0,i<128;i++;)
{datar[i]=datai[i];datai[i]=0;}
for(L=1;L<=7;L++)
{b=1;i=L-1;
while(i>1)
{b=b*2;i--;}
for(j=0;j<=b-1;j++)
{p=1;i=7-L;
while(i>0)
{p=p*2;i--;}
p=p*j;
for(k=j;k<128;k=k+2*b)
{TR=datar[k];TI=datai[k];temp=datar[k+b];
datar[k]=datar[k]+datar[k+b]*cos(2*3.14159*p/128)+datai[k+b]*sin(2*3.14159*p/128);
datai[k]=datai[k]-datar[k+b]*sin(2*3.14159*p/128)+datai[k+b]*cos(2*3.14159*p/128);
datar[k+b]=TR-datar[k+b]*cos(2*3.14159*p/128)-datai[k+b]*sin(2*3.14159*p/128);
datai[k+b]=TI+temp*sin(2*3.14159*p/128)-datai[k+b]*cos(2*3.14159*p/128);
}
}
}
for(i=0;i<32;i++)
{w[i]=sqrt(datar[i]*datar[i]+datai[i]*datai[i]);
w[i]=w[i]/64;}
w[0]=w[0]/2;
return w[32];
}
void main(void)
{ //float xdata datar[129];
//float xdata datai[129];
unsigned int i;
//float xdata w[32];
for(i=0;i<64;i++)
{datar[i]=100;
datai[i]=0;
}
for(i=64;i<128;i++)
{datar[i]=0;
datai[i]=0;
}
FFT();
// FFT(datar,datai,w);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -