AVR atmega168单片机PC0如何设置成ADC0的复用功能
答案:1 悬赏:80 手机版
解决时间 2021-03-24 16:43
- 提问者网友:杀生予夺
- 2021-03-24 07:48
AVR atmega168单片机PC0如何设置成ADC0的复用功能
最佳答案
- 五星知识达人网友:掌灯师
- 2021-03-24 08:31
首先初始化ADC:
void ADC_init(void)
{
//作为 ADC 输入,PC0要设置成输入,其实初始默认就是0(输入)。
DDRC &= 0xfe; //#11111110
//关闭PC0内部上拉电阻,(其实初始默认就是0.)
PORTC &= 0xfe;
//选择 ADC 时钟 = 系统时钟128分频
ADCSRA = 0x07;
//设置参考电压为AVCC, AREF 引脚外加滤波电容;
//转换值右对齐;
//ADC通道为内部 GND
ADMUX=0x4f; //01001111
//1.1V 的片内基准电压源, AREF 引脚外加滤波电容 左对齐,ADC通道为内部 GND
//ADMUX=0xef; //11101111
//模拟比较器控制及状态寄存器:ACSR的Bit 7 是 ACD(模拟比较器禁用),ACD 置位(=1)时,模拟比较器的电源被切断。
ACSR=0x80; //关闭内部比较器
ADCSRA |= 0x80; //10000000 //使能 ADC
}
//--------------------------------------------------------------
下面是一次转换的过程:
unsigned int adcRead (void)
{
unsigned int inADC;
ADMUX &= 0xf0; //#11110000B //清除已选择的ADC通道
ADMUX |= 0x01; // #00000001B //选择新的ADC通道(PC0)
ADCSRA|=0x40; //01000000 //启动单次ADC转换
//在 ADC 转换结束,且数据寄存器被更新后, ADCSRA的bit4:ADIF 置位
while ((ADCSRA & 0x10) == 0); //00010000 //通过ADIF判断ADC转换结束
inADC = ADCH ;
inADC =( inADC << 8) | ADCL;
ADCSRA|=0x10; //通过向ADIF标志写 1 来清 ADIF,//清除ADC转换结束标记
return inADC; //返回值
}
void ADC_init(void)
{
//作为 ADC 输入,PC0要设置成输入,其实初始默认就是0(输入)。
DDRC &= 0xfe; //#11111110
//关闭PC0内部上拉电阻,(其实初始默认就是0.)
PORTC &= 0xfe;
//选择 ADC 时钟 = 系统时钟128分频
ADCSRA = 0x07;
//设置参考电压为AVCC, AREF 引脚外加滤波电容;
//转换值右对齐;
//ADC通道为内部 GND
ADMUX=0x4f; //01001111
//1.1V 的片内基准电压源, AREF 引脚外加滤波电容 左对齐,ADC通道为内部 GND
//ADMUX=0xef; //11101111
//模拟比较器控制及状态寄存器:ACSR的Bit 7 是 ACD(模拟比较器禁用),ACD 置位(=1)时,模拟比较器的电源被切断。
ACSR=0x80; //关闭内部比较器
ADCSRA |= 0x80; //10000000 //使能 ADC
}
//--------------------------------------------------------------
下面是一次转换的过程:
unsigned int adcRead (void)
{
unsigned int inADC;
ADMUX &= 0xf0; //#11110000B //清除已选择的ADC通道
ADMUX |= 0x01; // #00000001B //选择新的ADC通道(PC0)
ADCSRA|=0x40; //01000000 //启动单次ADC转换
//在 ADC 转换结束,且数据寄存器被更新后, ADCSRA的bit4:ADIF 置位
while ((ADCSRA & 0x10) == 0); //00010000 //通过ADIF判断ADC转换结束
inADC = ADCH ;
inADC =( inADC << 8) | ADCL;
ADCSRA|=0x10; //通过向ADIF标志写 1 来清 ADIF,//清除ADC转换结束标记
return inADC; //返回值
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯