1.端口设置为输入模式。 2.AD初始化时,选择参考源,选择通道,选择对齐方式; 关闭模拟比较器;使能AD,启动AD,选择分频 如果使用中断,就要允许中断。 不实用中断,置位连续转换模式。
void AD_Init() { DDRC=0X00; PORTC=0X00; //C口输入模式,引脚三态高阻 ADCSRA=0X00; //禁止ADC工作 ADMUX|=(1<<REFS0)|(1<<ADLAR); //ADC参考电压为AVcc,ADC结果左对齐,选择通道ADC0 ACSR=(1<<ACD); //关闭模拟比较器 //ADCSRA|=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|(1<<ADPS2)|(1<<ADPS1); //使能AD转换,64分频,启动,连续转换模式 ADCSRA|=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1); //使能AD转换,64分频,启动,单次转换模式 }
虽然这样做了,可是AD还是开启不了,是不是硬件输入端有问题。因为书上描述过模拟输入电路所产生的信号必须能够有效地通过该ADCn引脚内部1.1K串联电阻驱动S/H(采样保持器)电容工作。 |