[AVR单片机] 求教 第一次AD转换数据处理正确,第二次全错了

[复制链接]
2203|2
 楼主| wcli63 发表于 2010-8-9 15:06 | 显示全部楼层 |阅读模式
AD开始转换
void AD_CHANGE(void)
{
  ADMUX=0X43;
  ADCSRA|=(1<<ADSC);
  DELAY(50);
  ADC_DATAL=ADCL;
  ADC_DATAH=ADCH;
  ADC_DATAH=ADC_DATAH&0X03;
  ADMUX=0X44;
  //ADCSRA=0X96;
  ADCSRA|=(1<<ADSC);
  DELAY(50);
  ADC2_DATAL=ADCL;
  ADC2_DATAH=ADCH;
  ADC2_DATAH=ADC2_DATAH&0X03;
}

AD采样数据处理
AD_CHANGE();
    DELAY(10);
    AD_DATA=ADC_DATAH*256+ADC_DATAL;
    if (AD_DATA>390)
    {
      wd_warn_flag=0;
   if (AD_DATA<=705) TEMP_DATA1=TEMP_DATA1+(AD_DATA)*10/91-42;
   else if(AD_DATA>705) TEMP_DATA1=TEMP_DATA1+AD_DATA/7-65;
    }
    AD_COUNT=AD_COUNT+1;
    if (AD_COUNT>=300)
    {
      AD_COUNT=0;
   TEMP_DATA2=TEMP_DATA1/300;
      if (TEMP_DATA2<35) TEMP_DATA2=(TEMP_DATA2*XLTEMP)/50;
   else TEMP_DATA2=(TEMP_DATA2*XHTEMP)/50;
   TEMP_DATA1=0;
    }
    if (TEMP_DATA2!=TEMP_DATA)
    {
      AD_TEST_FLAG=1;
   if (TEST_COUNT>=200)
   {
        TEMP_DATA=TEMP_DATA2;
     TEST_COUNT=0;
     AD_TEST_FLAG=0;
   }
    }
    else
    {
      TEST_COUNT=0;
   AD_TEST_FLAG=0;
    }

AD2_DATA=ADC2_DATAH*256+ADC2_DATAL;
    if (AD2_DATA>390)
    {
      wd_warn_flag=0;
   if (AD2_DATA<=705) TEMP2_DATA1=TEMP2_DATA1+(AD2_DATA)*10/91-42;
   else if(AD2_DATA>705) TEMP2_DATA1=TEMP2_DATA1+AD2_DATA/7-65;
    }
    AD2_COUNT=AD2_COUNT+1;
    if (AD2_COUNT>=300)
    {
      AD2_COUNT=0;
   TEMP2_DATA2=TEMP2_DATA1/300;
      if (TEMP2_DATA2<35) TEMP2_DATA2=(TEMP2_DATA2*XLTEMP)/50;
   else TEMP2_DATA2=(TEMP2_DATA2*XHTEMP)/50;
   TEMP2_DATA1=0;
    }
    if (TEMP2_DATA2!=TEMP_DATA)
    {
      AD_TEST_FLAG=1;
   if (TEST_COUNT>=200)
   {
        TEMP_DATA=TEMP_DATA2;
     TEST_COUNT=0;
     AD_TEST_FLAG=0;
   }
    }
    else
    {
      TEST_COUNT=0;
   AD_TEST_FLAG=0;
    }
 楼主| wcli63 发表于 2010-8-9 15:07 | 显示全部楼层
是不是我写的第2次把第一次覆盖了
 楼主| wcli63 发表于 2010-8-9 15:09 | 显示全部楼层
还有我的第二次采样和数据处理就是复制第一次的,如果没有复制,第一次采样数据处理是对的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

3

帖子

1

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