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