微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请问下atmega16怎么实现多路AD转换啊?

请问下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();
}

程序在上面 请问下为什么不能实现四路转换啊?谢谢各位大神!

你的IO口初始化为啥是在0x00h?一般不是51芯片的第一组IO口都在0x80h上么?如果芯片支持的ADC的IO口少的话,我一般考虑用串形输出的形式进行编码,用平均时间等待所有串口,依次服务,然后进行ADC。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top