📄 adc.c
字号:
#include "24e1.h"
#include "adc.h"
void InitADC(void)
{
//ADCCON = 0x20; // Channel 0, NPD=1, ADCRUN=0, EXTREF=0
//ADCCON = 0x28; // ADCSEL=8, NPD=1, ADCRUN=0, EXTREF=0
ADCCON = 0x30; // Channel 0, NPD=1, ADCRUN=0, EXTREF=1
ADCSTATIC &= 0x1c; //
//ADCSTATIC |= 0x03; // 12bit
ADCSTATIC |= 0x01; // 8bit
ADCCON &= ~0x80; // Start..
ADCCON |= 0x80; // ..new conversion
}
unsigned char ReadADC1(void)
{
unsigned char b;
while((EXIF & 0x10) == 0) // Wait until ADC conversion complete
;
EXIF &= ~0x10; // Clear ADC completion bit
b = ADCDATAH; // Read ADC data
ADCCON &= ~0x80; // Start..
ADCCON |= 0x80; // ..new conversion
return b;
}
unsigned char ReadADC(void)
{
unsigned char adc[7],adc_rev;
unsigned int sum;
unsigned char max,min,temp,i;
for(i=0;i<7;i++)
{
adc[i]=ReadADC1();
Delay100us(10);
}
max=adc[0];
min=adc[6];
if(max<min)
{
temp=max;
max=min;
min=temp;
}
for(i=1;i<6;i++)
{
if(adc[i]>max)
{
temp=max;
max=adc[i];
adc[i]=temp;
}
else if(adc[i]<min)
{
temp=min;
min=adc[i];
adc[i]=temp;
}
}
for(i=1,sum=0;i<6;i++)
{
sum+=adc[i];
}
adc_rev=sum/5;
return adc_rev;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -