//包含所需头文件
#include <ioM16v.h>
#include <macros.h>
/*---------------------------------------------------
void init_devices(void)
{
CLI(); //禁止所有中断
adc_init();
SEI();//开全局中断
}
----------------------------------------------------*/
//-----------------------adc转换初始化-------------------------
void adc_init(void)
{
ADMUX = 0x00;//----------------------单端0输入,选择外部参考电压
//ADMUX = 0x01;//----------------------单端1输入,选择外部参考电压
//ADMUX = 0x02;//----------------------单端2输入,选择外部参考电压
SFIOR |= 0x00;
ACSR = 0x80;//禁止模拟比较器
ADCSRA = 0x86;//64分频,ADC使能
}
//-----------------------读取转换结果--------------------------
uint mega16_adc()
{
uint addata;
//DDRA&=~BIT(0);
//PORTA&=~BIT(0);
//ADMUX=0X00;//----------------------单端0输入,选择外部参考电压
ADCSRA|=BIT(ADSC);//---------------开始AD转换
while(!(ADCSR&(BIT(ADIF))));//-----等待转换结束
addata=ADCL;
addata=addata+ADCH*256;
return addata;
}
/*--------------------------------------------------
ada=mega16_adc();
//ada=ada/2.044; // 5V电压范围
// ada=ada/1.022; //10V电压范围
ada=ada/0.511; //20V电压范围voltage
--------------------------------------------------*/
ADC_模块.C
最新推荐文章于 2024-05-28 09:35:30 发布