Type:
Compiler/Assembler:
#include<avr/io.h>
#include<util/delay.h>
void
init_adc()
{
ADMUX = (1<<REFS0);
ADCSRA = (1<<ADPS1) | (1<<ADPS2) | (1<<ADEN);
}
uint16_t read_adc(uint8_t ch)
{
init_adc();
ch = ch & 0b00000111;
ADMUX | = ch; ADCSRA | = (1<<ADSC);
while(!(ADCSRA & (1<<ADIF)));
ADCSRA | = (1<<ADIF);
return (ADC);
}
int main(void)
{
int x; init_adc(); DDRB=0xFF;
while(1)
{
x = read_adc(0); if (x>102.4)
PORTB = 0b00010000;
else if (x<21)
PORTB = 0b00000010;
else
PORTB = 0b00000000;
}
return 0;
}