请问下atmega16怎么实现多路AD转换啊?
时间:10-02
整理:3721RD
点击:
****IO端口设置****/
void IO_Init()
{
DDRA=0x00;
PORTA=0x00;
DDRB=0xff;
PORTB=0xff;
DDRC=0xff;
DDRD=0xff;
}
/****ADC初始化****/
void ADC_ini()
{
sei();
ADMUX=0x00;
ADCSRA=0XCC;
}
/****ADC开始转换****/
void ADC_Convert()
{
uchar i;
for(i=0;i<4;i++)
{
ADMUX=0x20+i;
ADCSRA=0xec;
ADC_H=ADCH;
v[i]=(unsigned long)(ADC_H)*500/256;
}
}
int main()
{
IO_Init();
ADC_ini();
while (1)
{
display();
}
}
ISR (ADC_vect)
{
ADC_Convert();
}
void IO_Init()
{
DDRA=0x00;
PORTA=0x00;
DDRB=0xff;
PORTB=0xff;
DDRC=0xff;
DDRD=0xff;
}
/****ADC初始化****/
void ADC_ini()
{
sei();
ADMUX=0x00;
ADCSRA=0XCC;
}
/****ADC开始转换****/
void ADC_Convert()
{
uchar i;
for(i=0;i<4;i++)
{
ADMUX=0x20+i;
ADCSRA=0xec;
ADC_H=ADCH;
v[i]=(unsigned long)(ADC_H)*500/256;
}
}
int main()
{
IO_Init();
ADC_ini();
while (1)
{
display();
}
}
ISR (ADC_vect)
{
ADC_Convert();
}
程序在上面 请问下为什么不能实现四路转换啊?谢谢各位大神!
你的IO口初始化为啥是在0x00h?一般不是51芯片的第一组IO口都在0x80h上么?如果芯片支持的ADC的IO口少的话,我一般考虑用串形输出的形式进行编码,用平均时间等待所有串口,依次服务,然后进行ADC。