我是初学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;
}
} |