找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 4627|回复: 0
收起左侧

[求助]AVR内部AD模块的求助!恳请各位大虾们帮个忙吧……

[复制链接]
ID:30377 发表于 2011-8-16 21:53 | 显示全部楼层 |阅读模式

各位大虾们!我想用128内部的AD转换器,但是我测试了一下发现,前面设置都是正确的,用万用表测了一下AREF脚,电压是2.52V,基本正确,后来我在转换结束标志位设定了一个LED闪烁,发现LED一直都在闪烁,这就说明AD一直都在转换当中,没有停下!所以我恳请各位大侠能帮我答疑一下!程序代码如下:
void init_adc()
{
  ADCSR=0X00;     //设置ADC前,禁止ADC
  ADMUX=BIT(REFS1)|BIT(REFS0);   //设置ADC内置参考电压为2.56V的片内基准电源
  ADMUX|=BIT(ADLAR);     //ADC转换结果左对齐,直接取ADCH的8位数据
  ADCSR=BIT(ADEN)|BIT(ADPS1)|BIT(ADPS0)|BIT(ADPS2);  //ADC使能,128分频
}

unsigned char get_adcdata(void)
{
  unsigned char volt;
//  ADMUX=BIT(MUX0)|BIT(MUX1)|BIT(MUX2)|BIT(MUX3);           //选择通道3,电池电压通道
  ADMUX|=0;
  ADCSR|=BIT(ADSC);  //启动单次ADC转换
  while (!(ADCSR&BIT(ADIF)))  //等待转换结束
  {
    PORTD &= ~BIT(0);
    delay_ms(100);
    PORTD |= BIT(0);
    delay_ms(100);
  }
  ADCSR&=~(BIT(ADIF));    //清楚ADIF位
  volt=ADCH;
  return volt;
}

回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表