#include<avr/io.h>
#include<avr/interrupt.h>
#include<util/delay.h>

void initDDRs(void)
{	DDRD = 0b11101000; //Setting LED Pins as output
	PORTD = 0;
	
	DDRC = 0; // Setting PC0 as HighZ input
	PORTC = 0;
}
void initADC(void)
{	ADMUX &= ~(_BV(REFS1)|_BV(REFS0));	// Using external Aref
	ADMUX &= ~_BV(ADLAR); // Left Aligning ADC Register
	ADMUX &= 0b0000;
	
	ADCSRA |= _BV(ADFR); //Putting into free runnin
	ADCSRA |= _BV(ADEN); // Enabling ADC
	ADCSRA |= _BV(ADSC);
	
} 

void glowLEDs(unsigned char n)
{	if(n==4)
	{	PORTD = 0b11101000; }
	else if(n==3)
	{	PORTD = 0b11100000;	}
	else if(n==2)
	{	PORTD = 0b10100000;	}
	else if(n==1)
	{	PORTD = 0b00100000;	}
	else
	{	PORTD = 0;	}
}
int main(void)
{	unsigned int X,x;

	initDDRs();
	initADC();
	
	while(1)
	{	X = 1024-ADC;
		if( X > 950)
		{	glowLEDs(4);	}
		else if(X > 900 )
		{	glowLEDs(3);	}
		else if(X > 800 )
		{	glowLEDs(2);	}
		else if(X > 750 )
		{	glowLEDs(1);	}
		else 
		{	glowLEDs(0);	}
		_delay_ms(20);
	}
}

