ADC
#include<avr\io.h>
#include<util\delay.h>
#define mid0 10
#define mid1 17
#define mid2 52
void on()
{
PORTB=0x01;
PORTD=0x01;
}
void delay_ms(unsigned char time_ms)
{
unsigned short delay_count = F_CPU / 4000;
unsigned short cnt;
asm volatile ("\n"
"L_dl1%=:\n\t"
"mov %A0, %A2\n\t"
"mov %B0, %B2\n"
"L_dl2%=:\n\t"
"sbiw %A0, 1\n\t"
"brne L_dl2%=\n\t"
"dec %1\n\t" "brne L_dl1%=\n\t":"=&w" (cnt) :"r"(time_ms), "r"((unsigned short) (delay_count)));
}
void delay(int a)
{
int i;
for(i=0;i<=a;i++)
delay_ms(100);
}
int main()
{
DDRA=0x00;
DDRB=0xFF;
DDRC=0xFF;
DDRD=0xFF;
ADMUX=0xE0;
ADCSRA=0xA4;
//ADCSRA|=(1<<ADEN);
ADCSRA|=(1<<ADSC);
delay_ms(1);
while(1)
{
ADMUX=0xE3;
delay_ms(10);
s0=ADCH;
ADMUX=0xE4;
delay_ms(10);
s1=ADCH;
ADMUX=0xE5;
delay_ms(10);
s2=ADCH;
if(s1>mid1)
{
on();
delay(2);
}
}
return 0;
}//end of main