#defineAD_ref_vref0x00//基准Vref
#defineAD_ref_avcc0x40//基准AVCC
#defineAD_ref_vref_in0xc0//基准内部Vref
#defineAD_refAD_ref_vref
//常量定义
//单端通道,不放大
#define AD_SE_ADC0 0x00//ADC0
#define AD_SE_ADC1 0x01//ADC1
#define AD_SE_ADC2 0x02//ADC2
#define AD_SE_ADC3 0x03//ADC3
#define AD_SE_ADC4 0x04//ADC4
#define AD_SE_ADC5 0x05//ADC5
#define AD_SE_ADC6 0x06//ADC6
#define AD_SE_ADC7 0x07//ADC7
//定义AD端口变量
#define AD_TEMPAD_SE_ADC0//ADC0
#define AD_VOUTAD_SE_ADC1//ADC1
#define AD_KEYINAD_SE_ADC2//ADC2
#defineAD_VINAD_SE_ADC3//ADC3
#define AD_IOUTAD_SE_ADC4//ADC4
#define AD_6BATAD_SE_ADC5//ADC5
#defineBAT_SE_PORTPORTB
#defineBAT_EN_PORTPORTB
#defineBAT_EN_PIN0X03
void adc_init(void)
{
DDRA=0x00;
ADCSRA=(1< //ADMUX=(1< //DIDR0=(1< } unsigned int read_adc(unsigned char adc_input,unsigned char i)//查询方式读取ADC单端通道 { unsigned charx; unsigned inty=0; ADC=0; ADMUX=(AD_ref|adc_input);//adc_input:单端通道 0x00~0x07,0x1E,0x1F //0xc0:选择内部2.56V参考电压 delay_nus(100); for(x=0;x
{ ADCSRA|=(1< loop_until_bit_is_set(ADCSRA,ADIF);//方法1 等待AD转换结束 // while ((ADCSRA&(1< // loop_until_bit_is_clear(ADCSRA,ADSC);//方法2 检测ADSC=0也行 ADCSRA|=(1< y += ADC;//ADC=ADCH:ADCL } return y; }
上一篇:AVR DS1302源程序
下一篇:AVR单片机驱动的LCD2004的源程序
推荐阅读最新更新时间:2024-03-16 15:10
设计资源 培训 开发板 精华推荐
- 极致简约,Digi-Key Electronics 推出全新的设计工具 DK IoT Studio™
- Imagination宣布PowerVR汽车战略下一步计划
- ST推出的多合一物联网节点开发套件的核心组件
- 大联大友尚集团推出安森美半导体电流型LLC-150W电源解决方案
- 新思科技推出下一代Design Compiler
- 不仅拍风景美拍人也很美 秋季郊游拍照手机推荐
- 全球仅666支!小米手环3 NFC限量纪念版免费送
- 一文看苹果发布会:双卡双待iPhone售价12799元创新高
- 新iPhone发布后 苹果不再销售iPhone SE和iPhone X
- iPhone XR国行售价6499元起 XS Max最高12799元