⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test18.c

📁 这里面有很多dsp应用程序源码
💻 C
字号:
#pragma CODE_SECTION(vect,"vect")

#include "math.h"

unsigned int *pmem=0;

#define PMST   *(pmem+0x001D)
#define SWCR   *(pmem+0x002B)
#define SWWSR  *(pmem+0x0028)
#define BSCR   *(pmem+0x0029)
#define IMR    *(pmem+0x0000)
#define IFR    *(pmem+0x0001)

#define pi 3.1415926

#define fs  200000             /*sample rate*/
#define f   1000               /*baseband frequency 500~20kHz*/

#define N   fs/f              

#define M   51                 /*filter step*/ 

int Ac=1638;                   

int i,j,k;
float q;
float m[N];                    
float x1[N],x2[N]; 
float y[N+M-1];
float h[M],hd[M],w[M];                   
float out[N];                 /*D/A input signal*/ 


void bpf(unsigned int n);

/*****************CPU initialization****************/
void cpu_init()
{
   PMST=0x3fa0;
   SWWSR=0x7fff;
   SWCR=0x0000;
   BSCR=0x0002;
   IMR=0;
   IFR=IFR;
} 

main()
{
   
   cpu_init();
   for(i=0;i<N;i++)                     
   {
      q=(float)f/fs;
      m[i]=(1.5*cos(2*pi*i*q)+1.5)*4095/5;
    }
    
   for(i=0;i<N;i++)
   {
      x1[i]=cos(2*pi*i*5/200);
      x2[i]=cos(2*pi*i*15/200);
   }

   for(i=0;i<N;i++)
   {
      m[i]=m[i]+Ac;
      y[i]=m[i]*x1[i]; 
      y[i]=y[i]*x2[i];
   }
   
   bpf(M);
}         

/****************band pass filter************/
void bpf(unsigned int n)                       
{
   unsigned int a;
   int b;  
   float wh=0.23,wl=0.17;
   float l;
   
   a=(n-1)/2;
   
   for(i=0;i<n;i++)
   {
      w[i]=0.54-0.46*cos(2*pi*i/(n-1));
      b=i-a;
      if(i==a)
         hd[i]=wh-wl;
      else
      {
         l=(float)(sin(b*pi*wh)-sin(b*pi*wl)); 
      	 hd[i]=l/(pi*b);
      }	  
      h[i]=w[i]*hd[i]; 
   } 
   
   for(i=N;i<N+n-1;i++)
      y[i]=y[i-N];
      
   for(i=n-1;i<N+n-1;i++)
   {
      l=0;
      for(j=0;j<n;j++)
        l+=h[j]*y[i-j];    
  
      out[i-n+1]=l;
   }
}

/************************************************/
void vect()
{
   asm(" .ref _c_int00");
  
   asm(" b _c_int00");  /* reset */
   asm(" nop");
   asm(" nop");
   asm(" rete");        /* nmi  */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* int0 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* int1 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* int2 */
   asm(" nop");        /* tint0 */
   asm(" nop");
   asm(" nop");
   asm(" rete");      /* brint0 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");      /* bxint0 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");      /* dmac0 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* tint1 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* int3 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* hpint */
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* brint1 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* bxint1 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");       /* dmac4 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" rete");     /* dmac5 */
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
   asm(" nop");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -