/* adc2.c
* This program demonstrates the use of ADMUX for selecting the ADC input pin
*/
#include<avr/io.h>
void main(void)
{
DDRB = 0xFF; // port B output
unsigned char compare_value = 0x7f;
unsigned char x[4]; //Array
ADCSRA = _BV(ADEN) | _BV(ADPS2); //Enable ADC with prescaler=16
int i=0;
while (1==1)
{
for(i=0;i<4;i++)
{
// Select pin ADC[0..3] using MUX
ADMUX = _BV(ADLAR) + i;
//Start conversion
ADCSRA |= _BV(ADSC);
// wait until converstion completed
while (ADCSRA & _BV(ADSC) ) {}
if(ADCH > compare_value) x[i]=1; //if value at the pin is greater than compare value
else x[i]=0;
}
if(x[0] == 1 || x[1] == 1 || x[2] == 1 || x[3] == 1) PORTB=0xFF; //If voltage at all the four pins is greater than the set voltage
else PORTB=0x00;
}
}