#INCLUDE <16F88.h>
#DEVICE ADC=10
#FUSES NOWDT,PUT,NOMCLR,NOBROWNOUT,NOLVP,NOCPD,NOWRT,CCPB3,NOPROTECT,INTRC_IO
#use delay(clock=8000000)



int	AD;
int PW;
int state;


#INT_EXT
void portb()
{
	state=state+1; //ja és itt ha 'state+=1'-gyel oldom meg, akkor sem működik jól
	if(state==3) state=0;
}


void main()
{
state=0;

output_low(PIN_B4);
output_low(PIN_B5);
output_low(PIN_B6);


setup_oscillator(OSC_8MHZ); //OSC_31KHZ

SETUP_ADC(ADC_CLOCK_DIV_16);
SETUP_ADC_PORTS(VSS_VREF|sAN1);
SET_ADC_CHANNEL(1);

SET_PWM1_DUTY(0);
SETUP_TIMER_2(T2_DIV_BY_1,255,1);
SETUP_CCP1(CCP_PWM);


port_b_pullups(1);
clear_interrupt(int_ext);
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
EXT_INT_EDGE(H_TO_L);



while(1)	//főciklus
	{

	if(state==0)
		{
		output_low(PIN_B4);
		output_low(PIN_B5);
		output_high(PIN_B6);
		sleep();
		};
		
	if(state==1);
		{
		output_low(PIN_B6);
		output_low(PIN_B4);
		output_high(PIN_B5);
		AD=READ_ADC(ADC_START_AND_READ);
		if(155<AD)
			{
			PW=255-((AD-155)*(4*(AD/100)));  //-184:3.6V   -165:3.2V
			SET_PWM1_DUTY(PW);
			};
	
		
		if(AD<155)
			{
				PW=1;
				SET_PWM1_DUTY(PW);
			};
		};
	
	if(state==2);
		{
		output_low(PIN_B5);
		output_low(PIN_B6);
		output_high(PIN_B4);
		PW=0;
		SET_PWM1_DUTY(PW);
		delay_us(10);
		PW=255;
		SET_PWM1_DUTY(PW);
		delay_us(50);
		};
	
	};

}
