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

📄 2700bs.txt

📁 ccs2000 下的2700HZ带阻滤波
💻 TXT
字号:
/*
;***********************************************************************
;*				  						 北京达盛科技有限公司
;*                                     	    研    发    部
;*
;*                                 	http://www.techshine.com
;*
 *文件名称:iirlp.c
 *文件标示:
 *摘    要:本文件内容为用tms320lf2407 dsp做的低通数字滤波实验     
 *************************************************************/

/************************文件预处理***************************/
#include "exp4_2407.h"
#include "math.h"
#define pi 3.1415926 


/*************************************************************/

/********************全局变量定义与初始化*********************/
unsigned int i=0;
unsigned int j=0;
//unsigned int h=0;
unsigned int point[256]={0};

unsigned int dly[89];
short h[89]={-14,23,-9,-6,0,8,16,-58,50,44,-147,119,67,-245,
200,72,-312,257,53,-299,239,20,-165,88,0,105,
-236,33,490,-740,158,932,1348,-2070,
724,1650,-2690,1104,1776,-3122,1458,1704,29491,
1704,1458,-3122,1776,1104,-2690,1650,724,-2070,
1348,932,158,158,-740,490,33,-236,105,0,88,-165,20,
239,299,53,257,-312,72,200,-245,67,119,-147,44,50,-58,16,8,
0,-6,-9,23,-14};

double nlpass,nlstop,nhpass,nhstop,a[3],b[3],x,yn;
unsigned int x_ad,y_da;
double w2,w1,w0;
/*************************************************************/

/*******************函数、子程序声明与定义********************/
void sys_ini()               //系统初始化子程序
{
 /*关总中断*/
  asm(" setc INTM");         
 /*抑制符号位扩展*/
  asm(" clrc SXM");          
 /*累加器中结果正常溢出*/
  asm(" clrc OVM");          
 /*禁止看门狗*/
  * WDCR=0x00E8;             
 /*CLKIN=10M,CLKOUT=40M,使能ADC模块,使能spi模块*/
  * SCSR1=0x00A1;  
 /*使能spi引脚*/
  * MCRB=0xFE3F;    
 /*io、ram、program都设为0等待读写*/
  WSGR=0x0600;                                     
 /*清除所有中断标志,"写1清0"*/ 
  * IFR=0xFFFF;                        
 /*使能cpu中断1*/
  * IMR=0x0001;  
}   

void spi_ini()               //spi初始化子程序
{
    /*复位spi*/
     * SPICCR&=0x007F;       
    /*CLOCK POLARITY=0,16位数据格式*/   
     * SPICCR=0x000F;        
    /*禁止溢出中断,CLOCK PHASE=1,禁用spi中断,主模式,使能数据发送*/
     * SPICTL=0x000E;  
    /*清除接收溢出中断标志*/         
     * SPISTS=0x0080;           
    /*波特率为40/4=10M*/
     * SPIBRR=0x0000;        
    /*启动spi工作*/   
     * SPICCR|=0x0080;      
}

void adc_ini()                  //ADC初始化子程序
{    
    /*仿真器挂起时,完成最后一次ad,连续运行模式
      预定标最长,高优先级中断,双排序模式,禁用其他模式*/
     * ADCTRL1=0x2CC0;   
    /*立即中断模式,清中断标志*/                                  
     * ADCTRL2=0x0602;         
    /*启用排序器1,最大转换数为1*/    
     * MAXCONV=0x0000;          
    /*选择模拟输入通道为4通道*/ 
     * CHSELSEQ1=0x0004;   
    /*开总中断*/     
     asm(" clrc INTM");         
}

void delay()
{
     unsigned int k;
     for(k=0;k<5;k++);
}








/*************************************************************/

/*****************中断服务子程序声明与定义********************/
interrupt void nothing()     //哑中断子程序
{
  return;         
}

interrupt void ad()
{
    dly[0]=* RESULT0>>6;	
  //  point[h]=x;

yn=0;
for(i=0;i<89;i++)
   yn +=(h[i]*dly[i]);
for(i=88;i>0;i--)
   dly[i]=dly[i-1]; 
     
  //  w2=x-a[1]*w1-a[2]*w0;
  //  y=b[0]*w2+b[1]*w1+b[2]*w0;
  //  w0=w1;
  //  w1=w2;     
   /*将数据打包成“从移位寄存器到DAC B数据寄存器 
     且用数据寄存器同时更新A和B两个DA的值*/        
    y_da=(int) (yn);///////4.0);
    * SPITXBUF=y_da&0x00ff;//|0x2500;
    delay();
   /*清除ad中断标志*/
    * ADCTRL2|=0x0200;  
 //   if(h==256) h=0;  
  //   i=0;
  //   i++;  
  //   i=10;  
    return;
}
/*************************************************************/

/**************************主程序*****************************/
void main(void)
{
     sys_ini();
     spi_ini();
     adc_ini();

 //    w2=w1=w0=0.0;	
 //    nlpass = 0.05;
 //    nlstop = 0.25;
 //    biir2lpdes(nlpass,nlstop,a,b);

     * ADCTRL2|=0x2000;         //软件启动eoc1--ad转换器
     for(;;)
     {
     }    
}
/***************************结束******************************/

⌨️ 快捷键说明

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