flame123 发表于 2014-5-27 21:54
呵呵,确实应该治疗一下,在学校治疗比来社会上治疗的代价要小很多,你说是不是~!!! ...
。。。。能不能帮忙治疗一下。
#include <msp430f249.h>
#include <stdio.h>
int h[40]={0,1,-2,1,-12,-30,79,66,-172,-52,145,2,176,-61,-800,398,1465,-1000,-1793,1587,
1587,-1793,-1000,1465,398,-800,-61,176,2,145,-52,-172,66,79,-30,-12,1,-2,1,0}; // *10000
int yn=0,input_sample,output_sample;
int dly[40];
void main()
{
WDTCTL=WDTPW+WDTHOLD; //停止看门狗
ADC12IE=0x01; //使能中断
P6SEL |=0x01; //I/O口设置为AD功能
P4DIR=0xff;
ADC12CTL0=ADC12ON+REFON+REF2_5V; //ADC12工作,使用内部参考电压2.5V
ADC12CTL1=SHP; //使用采样定时器,采用ADC12OSC时钟源
ADC12MCTL0=SREF_1;
//for(i=0;i<0x3600;i++) {} //延时等待参考电压建立
ADC12CTL0|=ENC; //允许转换
while(1)
{
ADC12CTL0 |=ADC12SC; //启动转换
while((ADC12IFG&BIT0)==0); // 等待转换结束
input_sample=ADC12MEM0;
int j; //滤波算法处理
dly[0]=input_sample;
yn=0;
for(j=0;j<40;j++)
yn+=(h[j]*dly[j]);
for (j=39;j>0;j--)
dly[j]=dly[j-1];
output_sample=yn/10000; //滤波结果
P4OUT = output_sample; //外接的DAC0832
}
}
我再proteus中仿真出来不对 |