打印
[AVR单片机]

请高手赐教

[复制链接]
1129|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jnlmy|  楼主 | 2011-10-19 11:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, dc, ADC, CSR, DCS
我是初学AVR的,想请教我写的这个程序为什么会两路AD之间数据互相干扰。
谢谢
#include "mega64.h"
#define jdq1 PORTD.2
#define lemp1 PORTC.5
#define lemp2 PORTC.6
#define lemp3 PORTC.7
int  addata;
int a;
int ad_handler(int i)   
{   
     
     if (i==0)
    { ADMUX=0x00;
        ADCSRA|=0X40;
        delay_us(10);
        while(ADCSRA&0X10==0);
        ADCSRA|=0X10;
        ADCSRA|=0X40;
      return ADCW;
      }  
     if (i==4)
     {
     ADMUX=0X04;
     ADCSRA|=0X40;
     delay_us(10);
      while(ADCSRA&0X10==0);
      ADCSRA|=0X10;
      ADCSRA|=0X40;
      return ADCW;
      }   
     
  }     
         
void main(void)
{
PORTF=0x00;
DDRF=0x00;            //ADC转换通道,后三位为输出。

while (1)
      {
         
        addata=ad_handler(0);   
           if (addata<100)
          {lemp1=1;
          lemp2=0;
          lemp3=0;   
         }
        if(addata<600&&addata>400)
          {lemp1=0;
          lemp2=1;
          lemp3=0;}
        PORTG=0X00;
        if (addata>650&&addata<700)
          {lemp1=0;
          lemp2=0;
          lemp3=1;
          PORTG=0X00;
          }
            if (addata>700)
          {lemp1=0;
          lemp2=0;
          lemp3=0;
           PORTG=0XFF;
          }   
         
         a=ad_handler(4);   
         if (a>700&&jdq1==0)
           jdq1=1;
         if (a<100)
          jdq1=0;  
        
         
       }
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

5

帖子

1

粉丝