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 + -
显示快捷键?