[AVR单片机] 有个mega88ADC中断程序ADC没有变化

[复制链接]
2421|2
 楼主| 一屡星辰 发表于 2013-1-30 11:25 | 显示全部楼层 |阅读模式
#include "main.h"

//模数转换中断

#define Def_Vref (1<<REFS1)+(1<<REFS0)            //参考电压源 内部1.1V电压基准 AREF引脚外加滤波电容  参考电压源Vref
#define Def_F    (1<<ADPS2)+(1<<ADPS1)+(1<<ADPS0) //ADC 64预分频  8兆hz
unsigned int  ADC_Result[8];  //ADC结果



//ADC初始化
void ADCStart(void)
{
  if(ADCSRA&(1<<ADSC)) return;    //正在转换,返回
  SREG_Bit7=0x01;
  ADMUX  = Def_Vref+7;            //定义通道号7 使用内部电压基准 转换结果右对齐
  ADCSRA = (1<<ADEN)+(1 << ADIE)+(0 << ADIF)+Def_F+(1<<ADATE)+(1<<ADSC);  //ADC允许 启动单次ADC 设置预分频 ADC中断允许(1<<ADIE) 自动触发ADC(1<<ADATE)
  ADCSRB = 0;                       //连续转换模式
                                    //  (1<<ADTS2)+(0<<ADTS2)+(0<<ADTS2) 连续转换模式;    //定时器0溢出 启动ADC
                                    //  DIDR0  = BIT2+BIT3+BIT4;    //ADC脚禁止数字输入
  }

#pragma vector=ADC_vect           // /* ADC Conversion Complete */
__interrupt void InterruptADC(void)
{
                                  //1.1/1023*1*1000=1.07526882 测量结果的单位:毫伏
                                  //ADC/1023 * 1.1 / ( 510 / (510+5100) ) * 1000 =11.81640625 测量结果的单位:毫伏
  unsigned char ADC_CH;           //当前正在进行转换的通道号
  float V;

  V=ADC;                          //读ADC结果
  
 楼主| 一屡星辰 发表于 2013-1-30 11:27 | 显示全部楼层
ADC读数一直没有变化,且一直是1.1V不知道哪里有问题,请大家帮忙看看
wan-wan1 发表于 2013-1-30 14:59 | 显示全部楼层
ADC的寄存器ADCH占两个字节,看下手册再配下寄存器吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部