adc.c
来自「用iAR编写的AD转换程序」· C语言 代码 · 共 59 行
C
59 行
#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 + =
减小字号Ctrl + -
显示快捷键?