📄 adc.c
字号:
#include "includes.h"
uchar AdReBuf[AD_BUF_SIZE];
uchar AdCount;
uchar AdComFlag;
uchar FisrtAdComFlag;
#pragma vector=ADC_vect
__interrupt void ADC_COM_ISR(void)
{
uchar temp;
temp = ADCH;
if(FisrtAdComFlag){
AdReBuf[AdCount] = temp;
AdCount++;
if(AdCount < 3){
ADCSRA |= (1<<ADSC);
}else {
AdCount = 0;
AdComFlag = 1;
}
}else FisrtAdComFlag = 1;
}
uchar GetAdRe(void)
{
uchar temp;
if(AdReBuf[0] >= AdReBuf[1]){
temp = AdReBuf[0];
} else temp = AdReBuf[1];
if(temp >= AdReBuf[2]){
return temp;
} else return AdReBuf[2];
}//对三次采样值比较取最大值
uchar ReadAd(uchar AdMux)
{
uchar temp;
ADMUX &= 0xF0;//ADMUX低四位清零
ADMUX |= (AdMux & 0x0f);//选择通道
ADCSRA |= (1<<ADSC);
while(!AdComFlag);
temp = GetAdRe();
AdComFlag = 0;
return temp;
}
void FirstAd(void)
{
ADCSRA |= (1<<ADSC);
while(!FisrtAdComFlag);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -