如题,下面是两个pic16f877a的ad转换的C程序:
void STACKC() // current sampling
{
int stackc_i=6;
ADCON0=0x81;
for(; stackc_i>0; --(stackc_i))
{
;
}
ADGO=1;
while(ADGO==1)
{
;
}
STACK_CO=STACK_C;
STACK_C=ADRESH;
if(STACK_CO==0)STACK_C= STACK_C;
else STACK_C= STACK_C*0.25+ STACK_CO*0.75;
}
void STACKC()
{
unsigned char i=0;
int temp_stackc[10],min=0,max=0,SUM=0;
while(i<10)
{
ADCON0=0x81;
delay30us() ;
ADGO=1;
while(ADGO==1)
{
;
}
temp_stackc[i]= ADRESH;
if(i==0)
{
min=temp_stackc[0];
max=temp_stackc[0];
SUM=temp_stackc[0];
}
else
{
min=(temp_stackc[i]<min ?temp_stackc[i]:min);
max=(temp_stackc[i]>max ?temp_stackc[i]:max);
SUM=SUM+temp_stackc[i];
}
i++;
}
STACK_C =(SUM-max-min)/8;
}
请问这两个函数有啥区别吗?是不是第二个有了一个滤波的,第一个没有滤波??谢谢!! |