各位谁有 PUdn 的账号 帮帮忙呗
http://www.pudn.com/downloads182/sourcecode/embed/detail854403.html#include <MSP430X42X.h>
#include <math.h>
#include "lcd.h"
#include "SD16.H"
#include "flash.h"
#include "bastimer.h"
#include "key.h"
#include "adjust.h"
#include "measure.h"
#include "TIME_A.H"
#include "set.h"
#include "shutdown.h"
#include "key.h"
#include "tmp275.h"
/*************************************************************************/
/* design by 杨焕刚 */
/* 2009年6月于创威电子科技有限公司 */
/*************************************************************************/
//以下设置方法可以得到24位的AD数据
//读取数据前 不能停止转换
char SD16_2=0;//通道2转换完成标志
void sd16_init(void)
{
SD16CTL =SD16DIV_0+SD16SSEL_0; //1分频,MCLK,外部参考源
SD16INCTL2 = SD16GAIN_1 + SD16INCH_1;// 1倍增益, 通道1,第4次采样后引发中断
SD16CCTL2 =SD16IE+SD16OSR_256; // 高速速电流缓冲,连续转换,256过采样,实现24位AD
SD16CCTL2 |=SD16DF;//双极二的补码
}
#pragma vector = SD16_VECTOR
__interrupt void SD16_ISR(void)
{ IE2 &= ~BITE; //关闭基本定时器中断
//判断通道转换完成,并将自定义的标志位置1
if ((SD16CCTL2 & SD16IFG)) SD16_2=1;
SD16CCTL2 &=~ SD16IFG;
SD16CCTL2 &=~ SD16OVIFG;
IE2 |= BITE; //开启基本定时器中断
}
//中位值滤波法
//* 31 次值取中值
//排序采用冒泡法
long filter0()
{ unsigned long VAR2=0;//SD16_2的转换数据
unsigned long value_buf;
unsigned long temp=0;
char count,i,j;
SD16CCTL2 |= SD16SC;//开始转换
for ( count=0;count<31;count++)
{
do{ }
while(SD16_2==0);
SD16_2=0;
//读转换结果
//24位AD
SD16CCTL2 &= ~SD16LSBACC;
VAR2 = (long)SD16MEM2 < 8;
SD16CCTL2 |= SD16LSBACC;
VAR2 |= ((long)SD16MEM2 & 0xff00) >> 8;
value_buf = VAR2;
}
SD16CCTL2 &=~SD16SC; //关闭转换VAR0;
for (j=0;j<31-1;j++)
{
for (i=0;i<31-j;i++)
{
if ( value_buf>value_buf )
{
temp = value_buf;
value_buf = value_buf;
value_buf = temp;
}
}
}
return value_buf[(31-1)/2];
}
//算术平均滤波法
//80次平均滤波
long filter()
{
char i;
unsigned long long sum = 0;
for (i=0;i<80;i++)
{
sum += filter0();
}
return (unsigned long)(sum/80);
} 能预览的何必要下文件呢? ccstc 发表于 2012-9-24 09:23:45 static/image/common/back.gif
#include
#include
#include "lcd.h"
#include "SD16.H"
#include "flash.h"
#include "
原来能预览?一直不知道
页:
[1]