流程
ADC配置解析
设置ADC时钟,配置ADR寄存器
设置采样时间,配置ADCR寄存器
设置ADC位数,配置ADCR寄存器
设置ADC参考电压,配置ADVREFH寄存器
配置相应IO口为ADC模拟输入模式并关上下拉电阻,配置IOSTB寄存器
开启ADC输入总通道,配置ADMD寄存器
选择一个ADC通道,先清理通道即置零,配置ADMD寄存器
开启ADC中断,配置ADR寄存器ADIE位,中断标志位在ADR寄存器ADIF位
使能ADC,配置ADMD寄存器
开始ADC转换命令,配置ADMD寄存器
EOC只读是转换结束标志位,与中断标志位重复,使用中断时可忽略
ADC结构框图
代码
void ADC_Init(void)
{//PB7
ADR &= 0xE7; //1110 0111 ADC clock = Fcpu/16
ADCR |= 0x0C; //0000 1100 ADC采样时间
ADCR &= 0xFD;ADCR |= 0x01; //1111 1101 ADC位数10-bit ADC
ADVREFH = C_Vrefh_VDD;//ADC reference voltage is VDD 0000 0011
ADCR |= 0x80; //1000 0000 PB7仅作为ADC模拟输入引脚
IOSTB |= 0x80; //1000 0000 输入模式 关上下拉
ADMD |= 0X10; //开启ADC总通道
Clear_Channel();//清空通道
ADMD |= ADC_CH_PB7; //0000 1011 ADC通道选择PB7
ADIE = 1; //开启ADC中断
ADMD |= 0x80; //ADC_EN
//等待256us
//ADC_START();
// ADRbits.ADIF = 0;
// while(ADMDbits.EOC==0); //标志位
}