

#define F_CPU 1000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#define ADC_VREF_TYPE 0x00


unsigned int tim = 0;
unsigned int tim2 = 0;
unsigned char regim;
unsigned char noh_regim ;
unsigned char mic ;
unsigned char foto ;
unsigned char foto_ON_OFF;

unsigned char noh_regim_e EEMEM;      // определяем переменную в EEPROM ночной режим ON OFF
unsigned char mic_e EEMEM;           // определяем переменную в EEPROM микрофона
unsigned char foto_e EEMEM;          // определяем переменную в EEPROM фотодатчика
unsigned char foto_ON_OFF_e EEMEM;         // определяем переменную в EEPROM фотодатчика ON OFF



int miganie()
{
	for ( int counter = 0; counter < regim ; counter++)
	{
		TCCR0A=0x83;
		OCR0A=0x10;
		_delay_ms(40);
		TCCR0A=0x00;
		OCR0A=0x00;
		_delay_ms(500);
	}
	return 0;
}






int main (void)
{
	DDRB=0x01;
	PORTB=0x02;
	TCCR0A=0x83;  //установка аппаратного шима
	TCCR0B=0x01;  // тоже...
	OCR0A=0x00;	  //Начальная яркость нулевая

	noh_regim = eeprom_read_byte(&noh_regim_e);             //считываем байт из EEPROM и помещаем его в "noh_regim_ON"
	mic = eeprom_read_byte(&mic_e);                          // считываем байт из EEPROM и помещаем его в "mic"
	foto = eeprom_read_byte(&foto_e);                        // считываем байт из EEPROM и помещаем его в "foto"
	foto_ON_OFF = eeprom_read_byte(&foto_ON_OFF_e);               // считываем байт из EEPROM и помещаем его в "foto_ON_OFF"


while(1)
	{
m1:		
if((PINB&(1 << PB1)) == 0)
{
	TCCR0A=0x00;
	tim++;
	_delay_ms(50);
		
		if (tim==20)
		{
			
			regim=1;
			noh_regim = 1;
			mic = 140;
			foto = 150;
			foto_ON_OFF=1;
			
			miganie();
		}
		if (tim==40)
		{
			regim=2;
			noh_regim = 1;
			mic = 160;
			foto = 150;
			foto_ON_OFF=1;
			miganie();
		}
		
		if (tim==60)
		{
			regim=3;
			noh_regim = 1;
			mic = 160;
			foto = 145;
			foto_ON_OFF=1;
			miganie();
		}
		if (tim==80)
		{
			regim=4;
			noh_regim = 1;
			mic = 120;
			foto = 145;
		    foto_ON_OFF=1;
			miganie();
		}
		if (tim==100)
		{
			regim=5;
			noh_regim = 1;
			mic = 125;
			foto = 1;
			foto_ON_OFF=1;
			miganie();
		}
		
		if (tim==120)
		{
			regim=6;
			noh_regim = 1;
			mic = 130;
			foto = 1;
			foto_ON_OFF=1;
			miganie();
		}
		if (tim==140)
		{
			regim=7;
			noh_regim = 0;
			mic = 145;
			foto = 145;
			foto_ON_OFF=0;
			miganie();
		}
		if (tim==160)
		{	
			regim=8;		
			noh_regim = 0;
			mic = 150;
			foto = 145;
		    foto_ON_OFF=0;
			miganie();
		}
		
		if (tim==180)
		{
			regim=9;
			noh_regim = 0;
			mic = 145;
			foto = 150;
			foto_ON_OFF=0;
			miganie();
		}
		if (tim==200)
		{
			regim=10;
			noh_regim = 0;
			mic = 150;
			foto = 150;
			foto_ON_OFF=0;
			miganie();
		}
		if (tim==220)
		{
			regim=11;
			noh_regim = 0;
			mic = 145;
			foto = 1;
			foto_ON_OFF=0;
			miganie();
		}
		
		if (tim==240)
		{
			regim=12;
			noh_regim = 0;
			mic = 150;
			foto = 1;
			foto_ON_OFF=0;
			miganie();
		}
		
		goto m1;
	}
	else
	{
		if (tim>10)
		{
			eeprom_write_byte(&noh_regim_e, noh_regim);  
			eeprom_write_byte(&mic_e, mic); 
 
			eeprom_write_byte(&foto_e, foto);  //записываем "foto" в EEPROM 
			eeprom_write_byte(&foto_e, foto_ON_OFF);  //записываем "foto_ON_OFF" в EEPROM 
			TCCR0A=0x83;
			tim = 0;
		}
	}
