adc.c

来自「我自己编写的atmega16的adc的范例」· C语言 代码 · 共 46 行

C
46
字号
#include<iom16v.h>
#include<macros.h>
#define AVCC                (1<<REFS0)
#define V_2.56              (1<<REFS0)|(1<<REFS1)
#define AD_PRESCAL_2        (1<<ADPS0)
#define AD_PRESCAL_4        (1<<ADPS1)
#define AD_PRESCAL_8        (1<<ADPS0)|(1<<ADPS1)
#define AD_PRESCAL_16       (1<<ADPS2)
#define AD_PRESCAL_32       (1<<ADPS0)|(1<<ADPS2)
#define AD_PRESCAL_64       (1<<ADPS1)|(1<<ADPS2)
#define AD_PRESCAL_128      (1<<ADPS0)|(1<<ADPS2)|(1<<ADPS1)
#define AD_SE_ADC0                   //ADC0
#define AD_SE_ADC1          (1<<MUX0) //ADC1
#define AD_SE_ADC2          (1<<MUX1) //ADC2
#define AD_SE_ADC3          (1<<MUX1)|(1<<MUX0) //ADC3
#define AD_SE_ADC4          (1<<MUX2)//ADC4
#define AD_SE_ADC5          (1<<MUX2)|(1<<MUX0)//ADC5
#define AD_SE_ADC6          (1<<MUX2)|(1<<MUX1) //ADC6
#define AD_SE_ADC7          (1<<MUX2)|(1<<MUX1)|(1<<MUX0) //ADC7
//========================================  
//数字转到字串,函数.--只有4个字节,而且向后对齐,前面补零. 
void MyItoa( unsigned int  Inter, unsigned char Dat[]) 
{ 
    unsigned char i; 
    for ( i=0; i<4 ; i++ ) 
    { 
        Dat[3-i]=Inter%10+'0'; 
        Inter/=10; 
    }  
} 
void ADC_initial(void)
{
 ADMUX=AVCC;
 ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADATE)|AD_PRESCAL_4;
}
unsigned int ADC_READ()
{
 unsigned char temp;
 unsigned int data;
 temp=ADCL;
 data=ADCH;
 data<<=8;
 data+=temp;
 return(data);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?