打印
[AVR单片机]

有个mega88ADC中断程序ADC没有变化

[复制链接]
1882|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

粉丝