fir.c
Upload User: tigerpxy
Upload Date: 2017-06-07
Package Size: 2k
Code Size: 1k
Development Platform:

C/C++

  1. #include <stdio.h>
  2. #define length 256
  3. int input[length],output[length];
  4. static int filter(int xin[],int xout[],int n, int h[]);
  5. static void dataIO(void);
  6. static int h[37]={ -78,-152,-210,-173,18,355,737,983,903,413,-374,
  7. -1139,-1443,-910,582,2792,5154,6963,7640,6963,5154,2792,582,-910,
  8. -1443,-1139,-374,413,903,983,737,355,18,-173,-210,-152,-78};
  9. /*Q15*/
  10. static int x1[length+37];
  11. /*低通滤波定点子程序*/
  12. static int filter(int indata[],int outdata[],int n,int h[])
  13. {
  14. int i,j;
  15. long sum;
  16. for(i=0;i<length;i++) x1[n+i-1]=indata[i];
  17. for(i=0;i<(n-1);i++) x1[n-i-2]=indata[length-i-1];
  18. for(i=0;i<length;i++)
  19. {
  20. sum=0;
  21. for(j=0;j<n;j++) sum+=(long)h[j]*x1[i-j+n-1];
  22. outdata[i]=sum>>15;
  23. }
  24. return 1;
  25. }
  26. void main()
  27.    while(1)
  28.    {
  29. dataIO();
  30. filter(input,output,19,h);
  31.    }
  32. }
  33. static void dataIO()
  34. {
  35. /*do data I/O*/
  36. return;
  37. }