

#include <mega328p.h>

#include <delay.h>

// Alphanumeric LCD Module functions
#include <alcd.h>
#include <stdio.h>

#define SH_CP PORTB.2
#define DS PORTB.1
#define ST_CP PORTB.3

typedef unsigned char byte;
unsigned char buffer[32];
bit blink,startindk,startindt,pirkor,indik,start_back,start_rele,start_mic,start_pirkor,
start_pirtua,start_gerkon_1,start_gerkon_2,ind_mic,start_ohtik,start_nochnik,start_tt,spark,
t_end,tic,start_timer,t_flag,lustra_on,rele_1,rele_2,rele_3,rele_4,ee,ff,
start_test,t_flag_2,t_end_2,sw_temp;

unsigned char sec,min,hour,day,week,month,year;
unsigned char w,a,b,cc,dreb_0,dreb_1,opros,delayt,ik,alb,alarm_b,alarm_a,bl,ab,ttt,
ind,tpirr,tpirrr,pirkorr,pir_kor,pir_tua,gerkon_1,gerkon_1_ncno,gerkon_2,gerkon_2_ncno,
mic,en_tic_kor,en_tic_tua,counter,test_del,sp,ind_mic_t,start_timer_2,start_tt_2,timer_2,tvvv_2,
en_al,en_al_2,cou,test_count,secur,mode,swit,nag,en_nochnik,time_ohr,aaaa,bbbb,cccc,dddd,eeee,
vb,vvv,shkaf,en_lustra,alarm_r,r,tr,port_1,port_2,port_3,port_4,
tvvv,en_tic_hour,enprom,buzzer,rem_mem,opros_akk,func_count,f_1,start_func,
tpirk,tpirt,delay_kor,timrem,phone,kor_from,kor_to,al,tal,al_0,day_al,day_1_al,
day_2_al,day_3_al,day_4_al,day_5_al,day_6_al,day_7_al,hour_al,min_al,hour_al_1,
hour_al_2,hour_al_3,hour_al_4,hour_al_5,hour_al_6,hour_al_7,min_al_1,min_al_2,
min_al_3,min_al_4,min_al_5,min_al_6,min_al_7,hour_nag_start,min_nag_start,hour_nag_fin,min_nag_fin,
day_nag_start,month_nag_start,year_nag_start,day_nag_fin,month_nag_fin,year_nag_fin,
hour_rem_1,min_rem_1,day_rem_1,month_rem_1,year_rem_1,al_rem_1;

signed char back,countdown,cor,correct,timer_count,tt,tt_2,timer_count_2; 

unsigned int temp,temper,mint,maxt,bc,dreb_2,dreb_3,rele,count_mic,count_pirkor,
count_pirtua,count_gerkon_1,ohtik,count_gerkon_2,vc,volt,volter,tnochnik,ttimer,t_count,
end_tt,ttimer_2,t_count_2,end_tt_2,copy_temp,tshkaf,qq,yy,rr,mem,eeppp,func; 

eeprom unsigned char eep_day,eep_month,eep_year,eep_week;
eeprom unsigned char eep_pir_kor,eep_pir_tua,eep_gerkon_1,eep_gerkon_1_ncno,eep_mic,eep_gerkon_2,
eep_gerkon_2_ncno,eep_tpirk,eep_tpirt,eep_delay_kor,eep_timrem,eep_en_tic_kor,eep_en_tic_tua,
eep_kor_from,eep_en_nochnik,eep_en_lustra,eep_time_ohr,eep_shkaf,
eep_kor_to,eep_buzzer,eep_phone,eep_enprom,eep_nag,eep_en_tic_hour,eep_al,eep_day_1_al,eep_day_2_al,
eep_day_3_al,eep_day_4_al,eep_day_5_al,eep_day_6_al,eep_day_7_al,eep_min_al_1,eep_hour_al_1,
eep_min_al_2,eep_hour_al_2,eep_min_al_3,eep_hour_al_3,eep_min_al_4,eep_hour_al_4,eep_min_al_5,
eep_hour_al_5,eep_min_al_6,eep_hour_al_6,eep_min_al_7,eep_hour_al_7,eep_min_nag_start,
eep_hour_nag_start,eep_min_nag_fin,eep_hour_nag_fin,eep_day_nag_start,eep_month_nag_start,
eep_year_nag_start,eep_day_nag_fin,eep_month_nag_fin,eep_year_nag_fin,eep_hour_rem_1,eep_min_rem_1,
eep_day_rem_1,eep_month_rem_1,eep_year_rem_1,eep_al_rem_1;

eeprom signed char eep_cor;
eeprom unsigned int eep_count_mic,eep_count_pirkor,eep_count_pirtua,eep_count_gerkon_1,
eep_count_gerkon_2;

// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
 cc++;
 if(cc>=254)cc=14;
 sec++;
 if(sec>=60){min++;sec=0;}
 if(min>=60){hour++;min=0;tic=1;}
 if(hour==23&&min==59&&sec==50){if(cor>0)sec+=cor;} 
 if(hour==23&&min==59&&sec==59&&cc>11){if(cor<0)sec-=(128-(cor&0b01111111));cc=0;}
 if(hour>=24){day++;hour=0;week++;mint=0;maxt=0;eep_day=day;eep_month=month;eep_week=week;eep_year=year;}
 if(week>=8)week=1;       
 
 if((day==32&&month==1)||(day==29&&month==2)||(day==32&&month==3)||(day==31&&month==4)||
 (day==32&&month==5)||(day==31&&month==6)||(day==32&&month==7)||(day==32&&month==8)||
 (day==31&&month==9)||(day==32&&month==10)||(day==31&&month==11)){month++;day=1;}
 if(day==32&&month==12){month=1;day=1;year++;} 

 if(PINC.5==0&&w==1)secur++; 
 if(pirkor==1)pirkorr++;
 if(start_back==1)back--;
 if(start_rele==1)rele++; 
 countdown=((time_ohr-1)-rele); 
 if(start_mic==1)count_mic++;
 if(start_pirkor==1)count_pirkor++; 
 if(start_gerkon_1==1)count_gerkon_1++;
 if(start_gerkon_2==1)count_gerkon_2++;
 if(start_pirtua==1)count_pirtua++;
 
 if(ind_mic==1)cou++;
 if(start_ohtik==1)ohtik++;
 if(start_nochnik==1)tnochnik++;
 
 if(start_tt==1)tt--; 
 if(tt<0){timer_count--;tt=59;} 
 
 if(start_tt_2==1)tt_2--; 
 if(tt_2<0){timer_count_2--;tt_2=59;} 
 
 tal++;
 tr++;
 a++;
 b++;
 tpirr++;
 tpirrr++; 
}

// Timer2 output compare interrupt service routine
interrupt [TIM2_COMPA] void timer2_compa_isr(void)
{
 if(PINC.3==0&&(w>=0&&w<=8))dreb_0++;
 if(PINC.3==1)dreb_0=0;
 if(dreb_0==5)w++;
 if(w==9)w=0;
 
 if(PINC.4==0&&(w>=10&&w<=132))dreb_1++; //переключение всех настроек
 if(PINC.4==1)dreb_1=0;
 if(dreb_1==5)w++;
 if(dreb_1==150){dreb_1=130;w++;}
 if(w==16)w=10;
 if(w==28)w=20;
 if(w==49)w=30;
 if(w==72)w=60;
 if(w==93)w=90; 
 if(w==133)w=110; 
 if(w==107)w=100;
 
 delayt++;
 opros++;
 alb++;
 ik++;
 bl++;
 ind++; 
 sp++;
 if(start_timer==1)ttimer++;
 t_count++;
 if(start_timer_2==1)ttimer_2++;
 t_count_2++;
 if(start_test==1)test_del++; 
 eeppp++;
 if(start_func==1)func++; 
 func_count++;
}

#define ADC_VREF_TYPE 0xC0

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

flash byte char0[8]={0b00000,0b00000,0b10001,0b10001,0b11111,0b10001,0b10001,0b00000};//н
flash byte char1[8]={0b00100,0b01110,0b01110,0b01110,0b11111,0b11111,0b00100,0b00000};//колокол
flash byte char2[8]={0b10001,0b10001,0b10001,0b01111,0b00001,0b00001,0b00001,0b00000};//Ч
flash byte char3[8]={0b00000,0b00000,0b11111,0b00100,0b00100,0b00100,0b00100,0b00000};//т
flash byte char4[8]={0b11111,0b10001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000};//П
flash byte char5[8]={0b00100,0b00100,0b11111,0b11111,0b11111,0b00100,0b00100,0b00000};//знак реле
flash byte char6[8]={0b00011,0b01100,0b10000,0b11110,0b10001,0b10001,0b01110,0b00000};//б
flash byte char7[8]={0b00011,0b00111,0b11111,0b11111,0b11111,0b00111,0b00011,0b00000};//динамик

void define_char(byte flash *pc,byte char_code)
{
byte i,a;                                       //свои значки и буквы
a=(char_code<<3)|0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}

void registr (void)
{          
 if(rele_1==1)copy_temp|=0b0000000000000001;
 if(rele_2==1)copy_temp|=0b0000000000000010;
 if(rele_3==1)copy_temp|=0b0000000000000100;
 if(rele_4==1)copy_temp|=0b0000000000001000; 
 
 if((startindk==1||startindt==1)&&w==0)copy_temp|=spark<<5; //мигание pirt pirk
 if(ind_mic==1&&w==1&&mode==1)copy_temp|=spark<<4;    //мигание при охране
 if(start_tt==1||start_tt_2==1)copy_temp|=indik<<5;         //мигание индикации работающего таймера 
 if(w==0)copy_temp|=0b0000000001000000;      //индикация режима часов
 if((temp>=270&&temp<=279)&&startindk==0&&startindt==0&&w==0)copy_temp|=0b0000000000100000; //превышение температуры более 27 градусов.
 if(temp>=280&&w==0)copy_temp|=0b0000000000010000; //превышение температуры более 28 градусов.
                       
 if(rele_1==0)copy_temp&=0b1111111111111110;
 if(rele_2==0)copy_temp&=0b1111111111111101;
 if(rele_3==0)copy_temp&=0b1111111111111011;
 if(rele_4==0)copy_temp&=0b1111111111110111;  
               
for(counter=0;counter<16;counter++)
 {if(copy_temp&0b1000000000000000){DS=1;}else{DS=0;} //данные
 SH_CP=1;  //тактовые
 SH_CP=0;
 copy_temp=copy_temp<<1;  
 } 
 ST_CP=1; //защелка
 ST_CP=0;      
}

void f_delay_0 (void)
{     
 delayt=0;lcd_clear();while(delayt<150)
 {lcd_gotoxy(0,0);lcd_putsf("Save...         ");}lcd_clear();w=0; 
}

void f_delay_1 (void)
{
 delayt=0;lcd_clear();while(delayt<150)
 {lcd_gotoxy(0,0);lcd_putsf("Save all...     ");}lcd_clear();w=0;
}

void ring_a (void)
{ 
 if(alb&0b00000011)alarm_a=1; //прерывистый звонок будильника 
 if(alb&0b01000100)alarm_a=0; 
}

void ring_t (void)
{
 if(alb&0b00000011)alarm_b=1;  //прерывистый звонок таймера
 if(alb&0b11000100)alarm_b=0;
}

void ring_r (void)
{
 alarm_r=(ik&0b01000000);
}
 
void bli (void)
{
 blink=(bl&0b00100000); 
}   

void temperature (void)
{
 if(opros>=100){
 for(ttt=0;ttt<16;ttt++){
 read_adc(6);
 ab=ADCL;
 bc=ADCH;
 temper=(bc<<8)|ab;
 temp+=temper;}temp>>=4;
 opros=0;}
}

void volt_akkum (void)
{   
 if(opros_akk>=50){
 for(vvv=0;vvv<16;vvv++){
 read_adc(7);
 vb=ADCL;
 vc=ADCH;
 volter=(vc<<8)|vb;
 volt+=volter;}volt>>=4;
 volt=volt*0.48;   // 10к на аккумулятор и 27к на землю.
 opros_akk=0;} 
}

void view_temp (void)
{ 
 opros_akk++;
 volt_akkum();
 lcd_gotoxy(0,0);
 sprintf(buffer,"t=%02u.%01u\xDF  t=%02u.%01u\xDF",mint/10,mint%10,maxt/10,maxt%10);
 lcd_puts(buffer);
 lcd_gotoxy(0,1);
 sprintf(buffer,"Uakk=%01u.%02uV      ",volt/100,volt%100);
 lcd_puts(buffer); 
 if(PINC.3==0){dreb_0=6;w=0;}
}           
                            
void contr_eep (void)
{   
if(  
day==eep_day&&week==eep_week&&month==eep_month&&year==eep_year&&
min_al_1==eep_min_al_1&&hour_al_1==eep_hour_al_1&&min_al_2==eep_min_al_2&&hour_al_2==eep_hour_al_2&&
min_al_3==eep_min_al_3&&hour_al_3==eep_hour_al_3&&min_al_4==eep_min_al_4&&hour_al_4==eep_hour_al_4&&
min_al_5==eep_min_al_5&&hour_al_5==eep_hour_al_5&&min_al_6==eep_min_al_6&&hour_al_6==eep_hour_al_6&&
min_al_7==eep_min_al_7&&hour_al_7==eep_hour_al_7&&al==eep_al&&day_1_al==eep_day_1_al&&
day_2_al==eep_day_2_al&&day_3_al==eep_day_3_al&&day_4_al==eep_day_4_al&&day_5_al==eep_day_5_al&&
day_6_al==eep_day_6_al&&day_7_al==eep_day_7_al&&cor==eep_cor&&gerkon_2==eep_gerkon_2&&
pir_tua==eep_pir_tua&&mic==eep_mic&&gerkon_1==eep_gerkon_1&&gerkon_1_ncno==eep_gerkon_1_ncno&&
gerkon_2_ncno==eep_gerkon_2_ncno&&pir_kor==eep_pir_kor&&tpirk==eep_tpirk&&tpirt==eep_tpirt&&
delay_kor==eep_delay_kor&&timrem==eep_timrem&&buzzer==eep_buzzer&&phone==eep_phone&&
kor_from==eep_kor_from&&kor_to==eep_kor_to&&en_tic_hour==eep_en_tic_hour&&
en_tic_kor==eep_en_tic_kor&&en_tic_tua==eep_en_tic_tua&&en_nochnik==eep_en_nochnik&&
en_lustra==eep_en_lustra&&time_ohr==eep_time_ohr&&shkaf==eep_shkaf&&enprom==eep_enprom&&
nag==eep_nag&&hour_nag_start==eep_hour_nag_start&&min_nag_start==eep_min_nag_start&&
hour_nag_fin==eep_hour_nag_fin&&min_nag_fin==eep_min_nag_fin&&
day_nag_start==eep_day_nag_start&&month_nag_start==eep_month_nag_start&&
year_nag_start==eep_year_nag_start&&day_nag_fin==eep_day_nag_fin&&
month_nag_fin==eep_month_nag_fin&&year_nag_fin==eep_year_nag_fin&&hour_rem_1==eep_hour_rem_1&&
min_rem_1==eep_min_rem_1&&day_rem_1==eep_day_rem_1&&month_rem_1==eep_month_rem_1&&  
year_rem_1==eep_year_rem_1&&al_rem_1==eep_al_rem_1)
{delayt=0;while(delayt<200){lcd_gotoxy(0,0);lcd_putsf("  TEST EEPROM         OK!       ");}w=0;}else
{lcd_gotoxy(0,0);lcd_putsf("  TEST EEPROM       FAILURE!    ");if(eeppp&0b0111111110010000){PORTB.5=0;}else{PORTB.5=1;}if(PINC.3==0)
{PORTB.5=0;dreb_0=6;w=0;}} 
}                          
                           
void time_correct (void)
{
 lcd_gotoxy(0,0);
 sprintf(buffer,"%02u:%02u:%02u        ",hour,min,sec);
 lcd_puts(buffer); 
 lcd_gotoxy(0,1);
 lcd_putsf("Press + to reset");
 if(PINC.5==0)sec=0;
 if(PINC.3==0){dreb_0=6;w=0;}
}

void week_all (void)
{
 if(week==1){lcd_putchar(0x05);lcd_putchar(0x01);}
 if(week==2){lcd_putchar(0x42);lcd_putchar(0x04);}
 if(week==3){lcd_putchar(0x43);lcd_putchar(0x70);}
 if(week==4){lcd_putchar(0x03);lcd_putchar(0x04);}
 if(week==5){lcd_putchar(0x05);lcd_putchar(0x04);}
 if(week==6){lcd_putchar(0x43);lcd_putchar(0x07);}
 if(week==7){lcd_putchar(0x42);lcd_putchar(0x63);}
}

void button (void)
{
 if(PINC.5==0)dreb_2++;
 if(PINC.5==1)dreb_2=0;
}

void all_al (void)
{
 sprintf(buffer,"%01u%01u%01u%01u%01u%01u%01u",day_1_al,day_2_al,day_3_al,day_4_al,day_5_al,day_6_al,day_7_al);
 lcd_puts(buffer);
}

void al_al (void)
{
 if(al==0){lcd_putsf("_ ");}if(al==1){lcd_putsf("s ");}if(al==2){lcd_putsf("a ");}
}

void nag_start (void)
{
 sprintf(buffer,"%02u:%02u %02u.%02u.20%02u",hour_nag_start,min_nag_start,day_nag_start,month_nag_start,year_nag_start);
 lcd_puts(buffer);
}

void nag_fin (void)
{
 sprintf(buffer,"%02u:%02u %02u.%02u.20%02u",hour_nag_fin,min_nag_fin,day_nag_fin,month_nag_fin,year_nag_fin);
 lcd_puts(buffer);
}

void sets (void)
{
 sprintf(buffer,"%02u:%02u:%02u t=%02u.%01u\xDF",hour,min,sec,temp/10,temp%10);
 lcd_puts(buffer);
}

void sets_2 (void)
{
 sprintf(buffer,"%02u-%02u-20%02u",day,month,year);
 lcd_puts(buffer);
}

void rem_on (void)
{
 lcd_putsf("TIME ON:     ");
}

void rem_off (void)
{
 lcd_putsf("TIME OFF:    ");
}

void rem_start (void)
{
 if(nag==0)lcd_putsf("OFF");
 if(nag==1)lcd_putsf(" ON");
 if(nag==2)lcd_putsf(" ON");
}

void rem_fin (void)
{
 if(nag==0)lcd_putsf("OFF");
 if(nag==1)lcd_putsf("OFF");
 if(nag==2)lcd_putsf(" ON");
}

void s_save (void)
{
 lcd_gotoxy(0,0);
 lcd_putsf("SAVE ALL? M/save");
 lcd_gotoxy(0,1);
 lcd_putsf("S/next    +/exit");
}

void all_rem_1 (void)
{
 if(al_rem_1==0)lcd_putsf("OFF");if(al_rem_1==1)lcd_putsf(" ON");
}

void all_set_rem_1 (void)
{
 sprintf(buffer,"%02u:%02u %02u.%02u.20%02u",hour_rem_1,min_rem_1,day_rem_1,month_rem_1,year_rem_1);
 lcd_puts(buffer);
}

void contr_alarm_rem (void)
{
 ring_r(); 
 bli();  
 lcd_gotoxy(0,0);
 lcd_putsf("    REMINDER    ");
 lcd_gotoxy(0,1);
 sprintf(buffer,"   %02u-%02u-20%02u   ",day,month,year,);
 lcd_puts(buffer); 
 
 if(day_rem_1==0&&month_rem_1==0&&year_rem_1==0){if(hour==hour_rem_1&&min==min_rem_1){PORTB.5=alarm_r;if(PINC.3==0||PINC.4==0||PINC.5==0)
 {PORTB.5=0;tr=0;r=0;delayt=0;while(delayt<100){};w=0;}}else{PORTB.5=0;rem_mem=1;w=0;}}else{
 if(hour==hour_rem_1&&min==min_rem_1&&day==day_rem_1&&month==month_rem_1&&year==year_rem_1)
 {PORTB.5=alarm_r;if(PINC.3==0||PINC.4==0||PINC.5==0)
 {PORTB.5=0;tr=0;r=0;delayt=0;while(delayt<100){};w=0;}}else{PORTB.5=0;rem_mem=1;w=0;}}                
}

void contr_alarm (void)
{     
 ring_a(); 
 bli();
 lcd_gotoxy(0,0);
 sprintf(buffer,"     %02u:%02u      ",hour,min);
 lcd_puts(buffer);
 lcd_gotoxy(0,1); 
 lcd_putsf("****Wake up!****");
 switch (al){
 case 1:if(hour==hour_al&&min==min_al){if(buzzer==1){PORTB.5=alarm_a;} if(PINC.3==0||PINC.4==0||PINC.5==0)
 {PORTB.5=0;al=0;delayt=0;while(delayt<100){};w=0;}}else {al=0;PORTB.5=0;w=0;} break;
 case 2:if(hour==hour_al&&min==min_al){if(buzzer==1){PORTB.5=alarm_a;} if(PINC.3==0||PINC.4==0||PINC.5==0)
 {PORTB.5=0;tal=0;al_0=0;delayt=0;while(delayt<100){};w=0;}}else {PORTB.5=0;w=0;} break;
            } 
}

void clock (void)
{ 
 tshkaf++;               
 temperature(); 
 if(sw_temp==0){
 lcd_gotoxy(0,0);
 sets();  
 lcd_gotoxy(0,1);
 sets_2();
 if(al_rem_1==1){if(rem_mem==0){lcd_putchar(0x2B);}if(rem_mem==1){lcd_putchar(0x21);}}else{lcd_putchar(0x20);}
 week_all();   
 if(al==1||al==2){lcd_putchar(0x02);}else{lcd_putchar(0x20);}
 lcd_gotoxy(14,1);
 if(shkaf==1){if(nag==1||nag==2)lcd_putchar(0x06);if(nag==0)lcd_putchar(0x20);}else{lcd_putchar(0x20);}
 lcd_gotoxy(15,1);
 if(en_tic_hour==1){lcd_putchar(0x08);}else{lcd_putchar(0x20);}
               } 
 if(mint==0||maxt==0){mint=temp;maxt=temp;}
 if(temp<mint)mint=temp;
 if(temp>maxt)maxt=temp;  
 mem++;
 if(rem_mem==1){if(mem&0b1111111111001110){PORTB.5=0;}else{PORTB.5=1;}} //пропущенное напоминание 
                                                               //примерно раз в 4 минуты пищит
 if(week==1){day_al=day_1_al;hour_al=hour_al_1;min_al=min_al_1;} //сработка будильника в понедельник
 if(week==2){day_al=day_2_al;hour_al=hour_al_2;min_al=min_al_2;} //сработка будильника во вторник
 if(week==3){day_al=day_3_al;hour_al=hour_al_3;min_al=min_al_3;} //сработка в среду
 if(week==4){day_al=day_4_al;hour_al=hour_al_4;min_al=min_al_4;} // сработка в четверг
 if(week==5){day_al=day_5_al;hour_al=hour_al_5;min_al=min_al_5;} //в пятницу
 if(week==6){day_al=day_6_al;hour_al=hour_al_6;min_al=min_al_6;} //в субботу
 if(week==7){day_al=day_7_al;hour_al=hour_al_7;min_al=min_al_7;} //в воскресенье
 
 if(hour==hour_al&&min==min_al&&day_al==1&&(al==1||(al==2&&al_0==1))){if(en_nochnik==1){start_nochnik=1;}w=250;}
 if(al_0==0){if(tal>65)al_0=1;} //автозавод будильника через 65 сек.
 if(r==0){if(tr>65)r=1;} //автозавод напоминалки через 65 сек.
            
 if(en_tic_hour==1){if(tic==1&&(hour>=12&&hour<=23)){for(yy=0;yy<5000;yy++){PORTB.5=1;}PORTB.5=0;tic=0;}}
                        
 if(en_lustra==0){
 if(PIND.2==1){pirkor=1;startindk=1;}else{pirkor=0;pirkorr=0;startindk=0;}
 if(pirkorr>=delay_kor&&pirkor==1&&(hour>=kor_from&&hour<=kor_to)){if(en_tic_kor==1){if(ee==1){for(qq=0;qq<5000;qq++){PORTB.5=1;}PORTB.5=0;ee=0;}}rele_1=1;tpirr=0;}else{if(tpirr>tpirk){ee=1;rele_1=0;}}
 if(pirkorr==255)pirkorr=delay_kor;
                 }   
 if(en_lustra==1){
 if(PINC.0==0){dreb_3++;}else{dreb_3=0;}
  if(dreb_3==500&&lustra_on==0){rele_1=1;lustra_on=1;dreb_3=510;} //вкл. люстру удержанием кнопки 2 сек
  if(dreb_3==500&&lustra_on==1){rele_1=0;lustra_on=0;dreb_3=510;} //выкл. удержанием 2 сек
                 }
 if(en_nochnik==0){
  if(PIND.3==1){startindt=1;if(en_tic_tua==1){if(ff==1){for(rr=0;rr<5000;rr++){PORTB.5=1;}PORTB.5=0;ff=0;}}rele_2=1;tpirrr=0;}
  else{startindt=0;if(tpirrr>tpirt){ff=1;rele_2=0;}}
                  }
 if(en_nochnik==1){  //работа ночной лампы настольной либо датчика PIRt
  if(tnochnik==70)rele_2=1;
  if(tnochnik==2400&&week==2){rele_2=0;start_nochnik=0;tnochnik=0;}
  if(tnochnik==3600&&(week==1||week==3||week==4||week==5)){rele_2=0;start_nochnik=0;tnochnik=0;}
                  }                 
 if(shkaf==0){if(PINC.1==0){rele_4=1;tshkaf=0;}else{if(tshkaf>500){rele_4=0;}}}
 if(shkaf==1){if(day_nag_start==0&&month_nag_start==0&&year_nag_start==0&&day_nag_fin==0
  &&month_nag_fin==0&&year_nag_fin==0){
  if(nag==2) //три варианта управления нагрузкой
   {
  if(hour==hour_nag_start&&min==min_nag_start)rele_4=1; //включение  
  if(hour==hour_nag_fin&&min==min_nag_fin)rele_4=0;//отключение 
   } 
  if(nag==1)
   {
  if(hour==hour_nag_start&&min==min_nag_start)rele_4=1;//включение 
   }
   }else{
  if(nag==2)
   {
  if(hour==hour_nag_start&&min==min_nag_start&&day==day_nag_start&&month==month_nag_start
  &&year==year_nag_start)rele_4=1; //включение
  if(hour==hour_nag_fin&&min==min_nag_fin&&day==day_nag_fin&&month==month_nag_fin
  &&year==year_nag_fin)rele_4=0; //выключение 
   }
  if(nag==1)
   {
  if(hour==hour_nag_start&&min==min_nag_start&&day==day_nag_start&&month==month_nag_start
  &&year==year_nag_start)rele_4=1; //только включение
   }}}
  if(al_rem_1==1){ 
  if(day_rem_1==0&&month_rem_1==0&&year_rem_1==0){if(hour==hour_rem_1&&min==min_rem_1&&r==1)w=252;}
   else{if(hour==hour_rem_1&&min==min_rem_1&&day==day_rem_1&&month==month_rem_1&&year==year_rem_1
   &&r==1)w=252;} 
                 }
 if(PINC.4==0){dreb_1=6;w=10;}
 if(hour==20&&min==0&&sec==0)w=170; //проверка eeprom в 20.00
           
 if(PINC.5==0){start_func=1;func_count=0;}else{start_func=0;func=0;}
 if(func==100){f_1=1;sw_temp=1;lcd_gotoxy(0,0);lcd_putsf("TIMER KITCHEN.  ");lcd_gotoxy(0,1);lcd_putsf("                ");}
 if(func==200){f_1=2;lcd_gotoxy(0,0);lcd_putsf("TEMP. & VOLTAGE.");lcd_gotoxy(0,1);lcd_putsf("                ");}
 if(func==300){f_1=3;lcd_gotoxy(0,0);lcd_putsf("TEST EEPROM.    ");lcd_gotoxy(0,1);lcd_putsf("                ");}
 
 if(func==400){f_1=4;lcd_gotoxy(0,0);lcd_putsf("CORRECT TIME.   ");lcd_gotoxy(0,1);lcd_putsf("                ");}
 if(func==500)func=100;
 if(func_count==100&&f_1==1){f_1=0;w=150;sw_temp=0;}
 if(func_count==100&&f_1==2){f_1=0;w=140;sw_temp=0;}
 if(func_count==100&&f_1==3){f_1=0;w=170;sw_temp=0;}
 if(func_count==100&&f_1==4){f_1=0;w=160;sw_temp=0;}
}

void ohrana (void)
{          
 ind_mic_t++;
 ring_t();                                                         
 bli();                                                   
 if(mode==0){
 lcd_gotoxy(0,0);
 lcd_putsf("SECURITY.    1/8");
 lcd_gotoxy(0,1);
 lcd_putsf("                ");
 start_rele=0;rele=0;start_back=0;start_ohtik=0;ohtik=0;back=timrem;PORTB.5=0;
  rele_3=0;if(en_nochnik==2){rele_2=0;}aaaa=0;bbbb=0;cccc=0;dddd=0;eeee=0;} 
 
 if(mode==2){lcd_gotoxy(0,0);
 lcd_putsf("REMAINING TIME: ");
 lcd_gotoxy(0,1);
 sprintf(buffer,"       %02u       ",back);
 lcd_puts(buffer);
 if(back==-1){start_back=0;mode=1;back=timrem;}}                    
 
 if(mode==1){
 if(rele==0){lcd_gotoxy(0,0);
 lcd_putsf("SECURITY ACTIVED"); 
 lcd_gotoxy(0,1);
 lcd_putsf("****************");}
 if(rele>=1&&rele<time_ohr){
 lcd_gotoxy(0,0);
 lcd_putsf("SECURITY ACTIVED");
 lcd_gotoxy(0,1);
 sprintf(buffer,"       %02u       ",countdown);
 lcd_puts(buffer);} 
 if(rele>=time_ohr){
 lcd_gotoxy(0,0);
 if(blink==0)lcd_putsf("-----ALARM------");
 if(blink==1)lcd_putsf("                ");
 lcd_gotoxy(0,1);
 lcd_putsf("SENSOR:");   
 if(bbbb==1){lcd_putsf("1");}else{lcd_putsf(" ");} 
 if(cccc==1){lcd_putsf("2");}else{lcd_putsf(" ");}  
 if(aaaa==1){lcd_putsf("3");}else{lcd_putsf(" ");}
 if(eeee==1){lcd_putsf("4");}else{lcd_putsf(" ");}
 if(dddd==1){lcd_putsf("5    ");}else{lcd_putsf("     ");}}
 
 if((PINC.2==0&&mic==1)||(PIND.3==1&&pir_tua==1)||(PIND.2==1&&pir_kor==1)||
 (((gerkon_1_ncno==1&&PINC.0==0)||(gerkon_1_ncno==0&&PINC.0==1))&&gerkon_1==1)||(((gerkon_2_ncno==1&&PINC.1==0)||(gerkon_2_ncno==0&&PINC.1==1))&&gerkon_2==1))
 {ind_mic=1;ind_mic_t=0;start_rele=1;}else{if(ind_mic_t>=254){ind_mic=0;}}
 
 if(PINC.2==0&&mic==1){start_mic=1;aaaa=1;}else{start_mic=0;}
 if(PIND.2==1&&pir_kor==1){start_pirkor=1;bbbb=1;}else{start_pirkor=0;} 
 if(PIND.3==1&&pir_tua==1){start_pirtua=1;cccc=1;}else{start_pirtua=0;}
 if(((gerkon_1_ncno==1&&PINC.0==0)||(gerkon_1_ncno==0&&PINC.0==1))&&gerkon_1==1){start_gerkon_1=1;eeee=1;}else{start_gerkon_1=0;}
 if(((gerkon_2_ncno==1&&PINC.1==0)||(gerkon_2_ncno==0&&PINC.1==1))&&gerkon_2==1){start_gerkon_2=1;dddd=1;}else{start_gerkon_2=0;}
 
 if(cou>=3){if(enprom==1){eep_count_mic=count_mic;eep_count_pirtua=count_pirtua;
 eep_count_pirkor=count_pirkor;eep_count_gerkon_1=count_gerkon_1;
 eep_count_gerkon_2=count_gerkon_2;}cou=0;}
 
 if(phone==0){
  if(rele>=time_ohr){rele_3=1;start_rele=0;}}  
  
 if(phone==1){
  if(rele==time_ohr||rele==(time_ohr+120)||rele==(time_ohr+720)||rele==(time_ohr+840))rele_3=1; //включение по охране 
  if(rele!=time_ohr&&rele!=(time_ohr+120)&&rele!=(time_ohr+720)&&rele!=(time_ohr+840))rele_3=0;
  if(rele==(time_ohr+848)){start_rele=0;rele=0;}} 
  
 if(phone==2){
  if(rele==time_ohr||rele==(time_ohr+2)||rele==(time_ohr+122)||rele==(time_ohr+124)||rele==(time_ohr+724)||rele==(time_ohr+726)||rele==(time_ohr+846)||rele==(time_ohr+848))rele_3=1; //включение по охране 
  if(rele!=time_ohr&&rele!=(time_ohr+2)&&rele!=(time_ohr+122)&&rele!=(time_ohr+124)&&rele!=(time_ohr+724)&&rele!=(time_ohr+726)&&rele!=(time_ohr+846)&&rele!=(time_ohr+848))rele_3=0;
  if(rele==(time_ohr+858)){start_rele=0;rele=0;}} 
  
 if(phone==3){
  if(rele==time_ohr||rele==(time_ohr+2)||rele==(time_ohr+4)||rele==(time_ohr+124)||rele==(time_ohr+126)||rele==(time_ohr+128)||rele==(time_ohr+728)||rele==(time_ohr+730)||rele==(time_ohr+732)||rele==(time_ohr+852)||rele==(time_ohr+854)||rele==(time_ohr+856))rele_3=1;
  if(rele!=time_ohr&&rele!=(time_ohr+2)&&rele!=(time_ohr+4)&&rele!=(time_ohr+124)&&rele!=(time_ohr+126)&&rele!=(time_ohr+128)&&rele!=(time_ohr+728)&&rele!=(time_ohr+730)&&rele!=(time_ohr+732)&&rele!=(time_ohr+852)&&rele!=(time_ohr+854)&&rele!=(time_ohr+856))rele_3=0;
  if(rele==(time_ohr+858)){start_rele=0;rele=0;}}
  
 if(phone==4){
  if(rele==time_ohr||rele==(time_ohr+300)||rele==(time_ohr+600)||rele==(time_ohr+900)||rele==(time_ohr+1200))rele_3=1;
  if(rele!=time_ohr&&rele!=(time_ohr+300)&&rele!=(time_ohr+600)&&rele!=(time_ohr+900)&&rele!=(time_ohr+1200))rele_3=0;
  if(rele==(time_ohr+1210)){start_rele=0;rele=0;}}  
  
  if(phone==5){
  if(rele>=time_ohr){start_ohtik=1;if(en_nochnik==2){if(ohtik%2==0){rele_2=0;}else{rele_2=1;}}else{if(ohtik%2==0){rele_3=0;}else{rele_3=1;}}}}
  
 if(phone==6){
  if(rele>=time_ohr){PORTB.5=alarm_b;start_rele=0;}}}
                      
 if(PINC.5==1)secur=0;
 if(secur==3&&swit==0){secur=4;swit=1;mode=2;start_back=1;back=timrem;}
 if(secur==3&&swit==1){secur=4;swit=0;mode=0;}     
}

void monitor (void)
{    
 lcd_gotoxy(0,0);
 lcd_putsf("STATISTICS.  2/8");
 lcd_gotoxy(0,1);
 lcd_putsf("                ");
 if(PINC.4==0){dreb_1=6;w=90;} 
}
      
void test_output (void)
{
 lcd_gotoxy(0,0);
 lcd_putsf("TEST RELE.   3/8");
 lcd_gotoxy(0,1);
 lcd_putsf("                "); 
 port_1=rele_1;port_2=rele_2;port_3=rele_3;port_4=rele_4;
 if(PINC.4==0){dreb_1=6;w=190;}
}
    
void alarm_set (void)
{                                                    
 lcd_gotoxy(0,0);
 lcd_putsf("SET ALARM.   4/8");  
 lcd_gotoxy(0,1);
 lcd_putsf("                ");
 if(PINC.4==0){dreb_1=6;w=110;}
}

void sensor_set (void)
{
 lcd_gotoxy(0,0);
 lcd_putsf("SET SENSORS. 5/8");
 lcd_gotoxy(0,1);
 lcd_putsf("                "); 
 if(PINC.4==0){dreb_1=6;w=20;}
}

void system_set (void)
{
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM.  6/8");
 lcd_gotoxy(0,1);
 lcd_putsf("                ");
 if(PINC.4==0){dreb_1=6;w=30;}
}

void timer_nagr (void)
{  
 lcd_gotoxy(0,0);  
 lcd_putsf("TIMER NAG.   7/8");
 lcd_gotoxy(0,1);     
 lcd_putsf("                ");
 if(PINC.4==0){dreb_1=6;w=60;}
 if(PINC.5==0)w=80; 
}

void reminder_1 (void)
{
 lcd_gotoxy(0,0);  
 lcd_putsf("REMINDER.    8/8");
 lcd_gotoxy(0,1);     
 lcd_putsf("                ");
 if(PINC.4==0){dreb_1=6;w=100;}
 if(PINC.5==0)w=82;
}

void view_reminder_1 (void)
{
 lcd_gotoxy(0,0);
 lcd_putsf("REMINDER_1:  ");
 all_rem_1();
 lcd_gotoxy(0,1);
 if(day_rem_1==0&&month_rem_1==0&&year_rem_1==0){
 sprintf(buffer,"%02u:%02u ",hour_rem_1,min_rem_1);
 lcd_puts(buffer);
 lcd_putsf("--.--.----");
 }else{all_set_rem_1();}
 
 if(PINC.3==0){dreb_0=6;w=0;}
 if(PINC.4==0){dreb_1=6;w=100;}
 rem_mem=0;
}

void view_timer_nag (void)
{
 if(day_nag_start==0&&day_nag_fin==0&&month_nag_start==0&&month_nag_fin==0&&year_nag_start==0
 &&year_nag_fin==0){
 lcd_gotoxy(0,0); 
 lcd_putsf("S");
 if(nag==0){lcd_putsf("-");}
 if(nag==1){lcd_putsf("+");}
 if(nag==2){lcd_putsf("+");}
 sprintf(buffer,"%02u:%02u ",hour_nag_start,min_nag_start);
 lcd_puts(buffer);
 lcd_putsf("--.--.--");
 lcd_gotoxy(0,1);
 lcd_putsf("F");
 if(nag==0){lcd_putsf("-");}
 if(nag==1){lcd_putsf("-");}
 if(nag==2){lcd_putsf("+");} 
 sprintf(buffer,"%02u:%02u ",hour_nag_fin,min_nag_fin);
 lcd_puts(buffer);
 lcd_gotoxy(8,1);
 lcd_putsf("--.--.--");}else{
 lcd_gotoxy(0,0); 
 lcd_putsf("S");
 if(nag==0){lcd_putsf("-");}
 if(nag==1){lcd_putsf("+");}
 if(nag==2){lcd_putsf("+");}
 sprintf(buffer,"%02u:%02u %02u.%02u.%02u",hour_nag_start,min_nag_start,day_nag_start,month_nag_start,year_nag_start);
 lcd_puts(buffer);
 lcd_gotoxy(0,1);
 lcd_putsf("F");
 if(nag==0){lcd_putsf("-");}
 if(nag==1){lcd_putsf("-");}
 if(nag==2){lcd_putsf("+");} 
 sprintf(buffer,"%02u:%02u %02u.%02u.%02u",hour_nag_fin,min_nag_fin,day_nag_fin,month_nag_fin,year_nag_fin);
 lcd_puts(buffer);} 
 
 if(PINC.3==0){dreb_0=6;w=0;}
 if(PINC.4==0){dreb_1=6;w=60;}
}

void test_rele (void)
{
 lcd_gotoxy(0,0);
 lcd_putsf("TEST RELE:      ");
 lcd_gotoxy(0,1);
 lcd_putsf("RELE:");
 lcd_putsf("1");
 if(test_count==1||test_count==5){lcd_putchar(0x06);lcd_putsf(" ");if(test_del==200)rele_1=1;}else{lcd_putsf("_ ");rele_1=0;}
 lcd_putsf("2");
 if(test_count==2||test_count==5){lcd_putchar(0x06);lcd_putsf(" ");if(test_del==200)rele_2=1;}else{lcd_putsf("_ ");rele_2=0;}
 lcd_putsf("3");
 if(test_count==3||test_count==5){lcd_putchar(0x06);lcd_putsf(" ");if(test_del==200)rele_3=1;}else{lcd_putsf("_ ");rele_3=0;}
 lcd_putsf("4");
 if(test_count==4||test_count==5){lcd_putchar(0x06);if(test_del==200)rele_4=1;}else{lcd_putsf("_");rele_4=0;}
 
 button();
 if(dreb_2==15){test_count++;test_del=0;start_test=1;}
 if(test_count>=6)test_count=0; 
 if(test_del==200)start_test=0;;
 if(PINC.3==0){rele_1=port_1;rele_2=port_2;rele_3=port_3;rele_4=port_4;dreb_0=6;w=0;} 
}
    
void back_timer (void)                             
{             
 if(t_end==1)end_tt++; 
 if(t_end_2==1)end_tt_2++;
 ring_t();
 lcd_gotoxy(0,0);
 sprintf(buffer,"T-1: %02umin ",tvvv);
 lcd_puts(buffer); 
 if(PINC.5==0&&start_tt==0){start_timer=1;t_count=0;t_end=0;end_tt=0;}else{start_timer=0;ttimer=0;}
 if(ttimer==100){timer_count=5;tvvv=5;t_flag=1;}
 if(ttimer==200){timer_count=10;tvvv=10;}
 if(ttimer==300){timer_count=15;tvvv=15;}
 if(ttimer==400){timer_count=20;tvvv=20;}
 if(ttimer==500){timer_count=25;tvvv=25;}                   //    T-1: 45min 39:25
 if(ttimer==600){timer_count=30;tvvv=30;}                   //    T-2: 05min  End
 if(ttimer==700){timer_count=35;tvvv=35;}
 if(ttimer==800){timer_count=40;tvvv=40;}
 if(ttimer==900){timer_count=45;tvvv=45;}
 if(ttimer==1000){timer_count=50;tvvv=50;}
 if(ttimer==1100){timer_count=55;tvvv=55;}
 if(ttimer==1200){timer_count=60;tvvv=60;}
 if(ttimer==1300){timer_count=70;tvvv=70;}
 if(ttimer==1400){timer_count=80;tvvv=80;}
 if(ttimer==1500){timer_count=90;tvvv=90;}
 if(t_count==500&&timer_count>0)start_tt=1;
 if(timer_count==0&&tt==0&&t_flag==1){lcd_putsf(" End ");start_tt=0;t_end=1;if(en_al==0){PORTB.5=alarm_b;}if(PINC.5==0||end_tt>=17142)
 {PORTB.5=0;en_al=1;t_end=0;end_tt=0;}}else{sprintf(buffer,"%02u:%02u",timer_count,tt);lcd_puts(buffer);}
 
 if(PINC.3==0){PORTB.5=0;en_al=0;en_al_2=0;timer_2=0;timer_count=0;tvvv=0;tt=0;t_flag=0;start_tt=0;t_end=0;end_tt=0;timer_count_2=0;tvvv_2=0;tt_2=0;t_flag_2=0;start_tt_2=0;t_end_2=0;end_tt_2=0;dreb_0=6;w=0;}             
 if(PINC.5==0&&start_tt==1){timer_2=1;start_timer_2=1;t_count_2=0;t_end_2=0;end_tt_2=0;}
 else{start_timer_2=0;ttimer_2=0;} // запуск 2-го таймера   
 
 if(timer_2==1){
 lcd_gotoxy(0,1);
 sprintf(buffer,"T-2: %02umin ",tvvv_2);
 lcd_puts(buffer); 
 if(ttimer_2==100){timer_count_2=5;tvvv_2=5;t_flag_2=1;}
 if(ttimer_2==200){timer_count_2=10;tvvv_2=10;}
 if(ttimer_2==300){timer_count_2=15;tvvv_2=15;}
 if(ttimer_2==400){timer_count_2=20;tvvv_2=20;}
 if(ttimer_2==500){timer_count_2=25;tvvv_2=25;}
 if(ttimer_2==600){timer_count_2=30;tvvv_2=30;}
 if(ttimer_2==700){timer_count_2=35;tvvv_2=35;}
 if(ttimer_2==800){timer_count_2=40;tvvv_2=40;}
 if(ttimer_2==900){timer_count_2=45;tvvv_2=45;}
 if(ttimer_2==1000){timer_count_2=50;tvvv_2=50;}
 if(ttimer_2==1100){timer_count_2=55;tvvv_2=55;}
 if(ttimer_2==1200){timer_count_2=60;tvvv_2=60;}
 if(ttimer_2==1300){timer_count_2=70;tvvv_2=70;}
 if(ttimer_2==1400){timer_count_2=80;tvvv_2=80;}
 if(ttimer_2==1500){timer_count_2=90;tvvv_2=90;}
 if(t_count_2==500&&timer_count_2>0)start_tt_2=1;
 if(timer_count_2==0&&tt_2==0&&t_flag_2==1){lcd_putsf(" End ");start_tt_2=0;t_end_2=1;if(en_al_2==0){PORTB.5=alarm_b;}if(PINC.5==0||end_tt_2>=17142)
 {PORTB.5=0;en_al_2=1;t_end_2=0;end_tt_2=0;}}else{sprintf(buffer,"%02u:%02u",timer_count_2,tt_2);lcd_puts(buffer);}
 
               }else{lcd_gotoxy(0,1);lcd_putsf("                ");}  
  if(ind>=0&&ind<=99)indik=0;  //индикация режима таймера
  if(ind>=100&&ind<=199)indik=1;
  if(ind>=200)ind=0;
  
}   

void set_hour (void)
{
 bli();
 lcd_gotoxy(0,0);
 if(blink==0){sets();}
 if(blink==1){sprintf(buffer,"  :%02u:%02u t=%02u.%01u\xDF",min,sec,temp/10,temp%10);
 lcd_puts(buffer);}
 lcd_gotoxy(0,1);
 sets_2(); 
 lcd_gotoxy(11,1);
 week_all(); 
 button();
 if(dreb_2==10)hour++;
 if(dreb_2==330){dreb_2=300;hour++;} 
 if(hour>=24)hour=0;
 if(PINC.3==0){dreb_0=6;w=0;}
}

void set_min (void)
{              
 bli();
 lcd_gotoxy(0,0);
 if(blink==0){sets();}
 if(blink==1){sprintf(buffer,"%02u:  :%02u t=%02u.%01u\xDF",hour,sec,temp/10,temp%10);
 lcd_puts(buffer);}
 lcd_gotoxy(0,1);
 sets_2(); 
 lcd_gotoxy(11,1);
 week_all();
 button();
 if(dreb_2==15)min++;
 if(dreb_2==330){dreb_2=300;min++;}
 if(min>=60)min=0;  
 if(PINC.3==0){dreb_0=6;w=0;}    
}

void set_day (void)
{       
 bli();
 lcd_gotoxy(0,0);
 sets();
 lcd_gotoxy(0,1);
 if(blink==0){sets_2();}
 if(blink==1){sprintf(buffer,"  -%02u-20%02u",month,year);
 lcd_puts(buffer);} 
 lcd_gotoxy(11,1);
 week_all(); 
 button();
 if(dreb_2==10)day++;
 if(dreb_2==330){dreb_2=300;day++;}
 if(day>=32)day=1;
 if(PINC.3==0){eep_day=day;dreb_0=6;w=200;}  
}

void set_month (void)
{
 bli();
 lcd_gotoxy(0,0);
 sets();
 lcd_gotoxy(0,1);
 if(blink==0){sets_2();}
 if(blink==1){sprintf(buffer,"%02u-  -20%02u",day,year);
 lcd_puts(buffer);}  
 lcd_gotoxy(11,1);
 week_all(); 
 button();
 if(dreb_2==10)month++;
 if(dreb_2==330){dreb_2=300;month++;}
 if(month>=13)month=1; 
 if(PINC.3==0){eep_day=day;eep_month=month;dreb_0=6;w=200;}
}

void set_year (void)
{
 bli();
 lcd_gotoxy(0,0);
 sets();
 lcd_gotoxy(0,1);
 if(blink==0){sets_2();}
 if(blink==1){sprintf(buffer,"%02u-%02u-    ",day,month);
 lcd_puts(buffer);} 
 lcd_gotoxy(11,1);
 week_all(); 
 button();
 if(dreb_2==10)year++;
 if(dreb_2==330){dreb_2=300;year++;}
 if(year>=100)year=0;
 if(PINC.3==0){eep_day=day;eep_month=month;eep_year=year;dreb_0=6;w=200;}
}

void set_week (void)
{
 bli();
 lcd_gotoxy(0,0);
 sets();
 lcd_gotoxy(0,1);
 sets_2(); 
 lcd_gotoxy(11,1);
 if(blink==0){week_all();}
 if(blink==1){lcd_putsf("  ");}   
 button();
 if(dreb_2==10)week++;
 if(week>=8)week=1; 
 if(PINC.3==0){eep_day=day;eep_month=month;eep_year=year;eep_week=week;dreb_0=6;w=201;}
}

void set_al_on_off (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    1234567");
 lcd_gotoxy(0,1);
 lcd_putsf("Alarm: "); 
 if(blink==0){al_al();}
 if(blink==1){lcd_putsf("  ");}
 all_al(); 
 button();
 if(dreb_2==13)al++;
 if(al>=3)al=0;
 if(PINC.3==0){eep_al=al;dreb_0=6;w=200;}
}

void set_hour_al_1 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    1______");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_1,min_al_1);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"  :%02u  ",min_al_1);lcd_puts(buffer);} 
 al_al();
 all_al(); 
 button();
 if(dreb_2==10)hour_al_1++;
 if(dreb_2==330){dreb_2=300;hour_al_1++;}
 if(hour_al_1>=24)hour_al_1=0; 
 if(PINC.3==0){eep_hour_al_1=hour_al_1;dreb_0=6;w=200;}
}

void set_min_al_1 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    1______");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_1,min_al_1);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"%02u:    ",hour_al_1);lcd_puts(buffer);}  
 al_al();
 all_al();
 button();
 if(dreb_2==10)min_al_1++;
 if(dreb_2==330){dreb_2=300;min_al_1++;}
 if(min_al_1>=60)min_al_1=0;
 if(PINC.3==0){eep_min_al_1=min_al_1;dreb_0=6;w=200;}
}

void set_day_1_al (void)
{                 
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    1______");
 lcd_gotoxy(0,1);
 sprintf(buffer,"%02u:%02u  ",hour_al_1,min_al_1);lcd_puts(buffer); 
 al_al();
 if(blink==0){all_al();}
 if(blink==1){sprintf(buffer," %01u%01u%01u%01u%01u%01u",
 day_2_al,day_3_al,day_4_al,day_5_al,day_6_al,day_7_al);
 lcd_puts(buffer);}
 button();
 if(dreb_2==13)day_1_al++;
 if(day_1_al>=2)day_1_al=0;
 if(PINC.3==0){eep_day_1_al=day_1_al;dreb_0=6;w=200;}   
}

void set_hour_al_2 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    _2_____");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_2,min_al_2);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"  :%02u  ",min_al_2);lcd_puts(buffer);} 
 al_al();
 all_al(); 
 button();
 if(dreb_2==10)hour_al_2++;
 if(dreb_2==330){dreb_2=300;hour_al_2++;} 
 if(hour_al_2>=24)hour_al_2=0;
 if(PINC.3==0){eep_hour_al_2=hour_al_2;dreb_0=6;w=200;}
}

void set_min_al_2 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    _2_____");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_2,min_al_2);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"%02u:    ",hour_al_2);lcd_puts(buffer);}  
 al_al();
 all_al();
 button();
 if(dreb_2==10)min_al_2++;
 if(dreb_2==330){dreb_2=300;min_al_2++;} 
 if(min_al_2>=60)min_al_2=0;
 if(PINC.3==0){eep_min_al_2=min_al_2;dreb_0=6;w=200;}
}

void set_day_2_al (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    _2_____");
 lcd_gotoxy(0,1);
 sprintf(buffer,"%02u:%02u  ",hour_al_2,min_al_2);lcd_puts(buffer); 
 al_al();
 if(blink==0){all_al();}
 if(blink==1){sprintf(buffer,"%01u %01u%01u%01u%01u%01u",
 day_1_al,day_3_al,day_4_al,day_5_al,day_6_al,day_7_al);
 lcd_puts(buffer);}
 button();
 if(dreb_2==13)day_2_al++;
 if(day_2_al>=2)day_2_al=0;
 if(PINC.3==0){eep_day_2_al=day_2_al;dreb_0=6;w=200;}
}

void set_hour_al_3 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    __3____");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_3,min_al_3);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"  :%02u  ",min_al_3);lcd_puts(buffer);} 
 al_al();
 all_al(); 
 button();
 if(dreb_2==10)hour_al_3++;
 if(dreb_2==330){dreb_2=300;hour_al_3++;}
 if(hour_al_3>=24)hour_al_3=0;
 if(PINC.3==0){eep_hour_al_3=hour_al_3;dreb_0=6;w=200;}
}

void set_min_al_3 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    __3____");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_3,min_al_3);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"%02u:    ",hour_al_3);lcd_puts(buffer);}  
 al_al();
 all_al();
 button();
 if(dreb_2==10)min_al_3++;
 if(dreb_2==330){dreb_2=300;min_al_3++;}  
 if(min_al_3>=60)min_al_3=0;
 if(PINC.3==0){eep_min_al_3=min_al_3;dreb_0=6;w=200;}
}

void set_day_3_al (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    __3____");
 lcd_gotoxy(0,1);
 sprintf(buffer,"%02u:%02u  ",hour_al_3,min_al_3);lcd_puts(buffer); 
 al_al();
 if(blink==0){all_al();}
 if(blink==1){sprintf(buffer,"%01u%01u %01u%01u%01u%01u",
 day_1_al,day_2_al,day_4_al,day_5_al,day_6_al,day_7_al);
 lcd_puts(buffer);}
 button();
 if(dreb_2==13)day_3_al++;
 if(day_3_al>=2)day_3_al=0;
 if(PINC.3==0){eep_day_3_al=day_3_al;dreb_0=6;w=200;}
}

void set_hour_al_4 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ___4___");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_4,min_al_4);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"  :%02u  ",min_al_4);lcd_puts(buffer);} 
 al_al();
 all_al(); 
 button();
 if(dreb_2==10)hour_al_4++;
 if(dreb_2==330){dreb_2=300;hour_al_4++;}
 if(hour_al_4>=24)hour_al_4=0;
 if(PINC.3==0){eep_hour_al_4=hour_al_4;dreb_0=6;w=200;}
}

void set_min_al_4 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ___4___");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_4,min_al_4);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"%02u:    ",hour_al_4);lcd_puts(buffer);}  
 al_al();
 all_al();
 button();
 if(dreb_2==10)min_al_4++;
 if(dreb_2==330){dreb_2=300;min_al_4++;}
 if(min_al_4>=60)min_al_4=0;
 if(PINC.3==0){eep_min_al_4=min_al_4;dreb_0=6;w=200;}
}

void set_day_4_al (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ___4___");
 lcd_gotoxy(0,1);
 sprintf(buffer,"%02u:%02u  ",hour_al_4,min_al_4);lcd_puts(buffer); 
 al_al();
 if(blink==0){all_al();}
 if(blink==1){sprintf(buffer,"%01u%01u%01u %01u%01u%01u",
 day_1_al,day_2_al,day_3_al,day_5_al,day_6_al,day_7_al);
 lcd_puts(buffer);}
 button();
 if(dreb_2==13)day_4_al++;
 if(day_4_al>=2)day_4_al=0; 
 if(PINC.3==0){eep_day_4_al=day_4_al;dreb_0=6;w=200;}
}

void set_hour_al_5 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ____5__");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_5,min_al_5);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"  :%02u  ",min_al_5);lcd_puts(buffer);} 
 al_al();
 all_al(); 
 button();
 if(dreb_2==10)hour_al_5++;
 if(dreb_2==330){dreb_2=300;hour_al_5++;} 
 if(hour_al_5>=24)hour_al_5=0;
 if(PINC.3==0){eep_hour_al_5=hour_al_5;dreb_0=6;w=200;}
}

void set_min_al_5 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ____5__");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_5,min_al_5);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"%02u:    ",hour_al_5);lcd_puts(buffer);}  
 al_al();
 all_al();
 button();
 if(dreb_2==10)min_al_5++;
 if(dreb_2==330){dreb_2=300;min_al_5++;}
 if(min_al_5>=60)min_al_5=0;
 if(PINC.3==0){eep_min_al_5=min_al_5;dreb_0=6;w=200;}
}

void set_day_5_al (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ____5__");
 lcd_gotoxy(0,1);
 sprintf(buffer,"%02u:%02u  ",hour_al_5,min_al_5);lcd_puts(buffer); 
 al_al();
 if(blink==0){all_al();}
 if(blink==1){sprintf(buffer,"%01u%01u%01u%01u %01u%01u",
 day_1_al,day_2_al,day_3_al,day_4_al,day_6_al,day_7_al);
 lcd_puts(buffer);}
 button();
 if(dreb_2==13)day_5_al++;
 if(day_5_al>=2)day_5_al=0; 
 if(PINC.3==0){eep_day_5_al=day_5_al;dreb_0=6;w=200;}
}

void set_hour_al_6 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    _____6_");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_6,min_al_6);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"  :%02u  ",min_al_6);lcd_puts(buffer);} 
 al_al();
 all_al(); 
 button();
 if(dreb_2==10)hour_al_6++;
 if(dreb_2==330){dreb_2=300;hour_al_6++;}
 if(hour_al_6>=24)hour_al_6=0;
 if(PINC.3==0){eep_hour_al_6=hour_al_6;dreb_0=6;w=200;}
}

void set_min_al_6 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    _____6_");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_6,min_al_6);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"%02u:    ",hour_al_6);lcd_puts(buffer);}  
 al_al();
 all_al();
 button();
 if(dreb_2==10)min_al_6++;
 if(dreb_2==330){dreb_2=300;min_al_6++;}
 if(min_al_6>=60)min_al_6=0;
 if(PINC.3==0){eep_min_al_6=min_al_6;dreb_0=6;w=200;}
}

void set_day_6_al (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    _____6_");
 lcd_gotoxy(0,1);
 sprintf(buffer,"%02u:%02u  ",hour_al_6,min_al_6);lcd_puts(buffer); 
 al_al();
 if(blink==0){all_al();}
 if(blink==1){sprintf(buffer,"%01u%01u%01u%01u%01u %01u",
 day_1_al,day_2_al,day_3_al,day_4_al,day_5_al,day_7_al);
 lcd_puts(buffer);}
 button();
 if(dreb_2==13)day_6_al++;
 if(day_6_al>=2)day_6_al=0; 
 if(PINC.3==0){eep_day_6_al=day_6_al;dreb_0=6;w=200;}
}

void set_hour_al_7 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ______7");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_7,min_al_7);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"  :%02u  ",min_al_7);lcd_puts(buffer);} 
 al_al();
 all_al(); 
 button();
 if(dreb_2==10)hour_al_7++;
 if(dreb_2==330){dreb_2=300;hour_al_7++;}
 if(hour_al_7>=24)hour_al_7=0;
 if(PINC.3==0){eep_hour_al_7=hour_al_7;dreb_0=6;w=200;}
}

void set_min_al_7 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ______7");
 lcd_gotoxy(0,1);
 if(blink==0){sprintf(buffer,"%02u:%02u  ",hour_al_7,min_al_7);lcd_puts(buffer);}
 if(blink==1){sprintf(buffer,"%02u:    ",hour_al_7);lcd_puts(buffer);}  
 al_al();
 all_al();
 button();
 if(dreb_2==10)min_al_7++;
 if(dreb_2==330){dreb_2=300;min_al_7++;}
 if(min_al_7>=60)min_al_7=0;
 if(PINC.3==0){eep_min_al_7=min_al_7;dreb_0=6;w=200;}
}

void set_day_7_al (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("Days:    ______7");
 lcd_gotoxy(0,1);
 sprintf(buffer,"%02u:%02u  ",hour_al_7,min_al_7);lcd_puts(buffer); 
 al_al();
 if(blink==0){all_al();}
 if(blink==1){sprintf(buffer,"%01u%01u%01u%01u%01u%01u ",
 day_1_al,day_2_al,day_3_al,day_4_al,day_5_al,day_6_al);
 lcd_puts(buffer);}
 button();
 if(dreb_2==13)day_7_al++;
 if(day_7_al>=2)day_7_al=0; 
 if(PINC.3==0){eep_day_7_al=day_7_al;dreb_0=6;w=200;}
}

void set_save_al (void)
{
 s_save();
 if(PINC.3==0){eep_min_al_1=min_al_1;eep_hour_al_1=hour_al_1;eep_min_al_2=min_al_2;
 eep_hour_al_2=hour_al_2;eep_min_al_3=min_al_3;eep_hour_al_3=hour_al_3;
 eep_min_al_4=min_al_4;eep_hour_al_4=hour_al_4;eep_min_al_5=min_al_5;
 eep_hour_al_5=hour_al_5;eep_min_al_6=min_al_6;eep_hour_al_6=hour_al_6;
 eep_min_al_7=min_al_7;eep_hour_al_7=hour_al_7;eep_al=al;eep_day_1_al=day_1_al;
 eep_day_2_al=day_2_al;eep_day_3_al=day_3_al;eep_day_4_al=day_4_al;eep_day_5_al=day_5_al;
 eep_day_6_al=day_6_al;eep_day_7_al=day_7_al;dreb_0=6;w=201;}
 if(PINC.5==0)w=0;
}

void set_pir_kor (void)
{
 bli();    
 lcd_gotoxy(0,0);
 lcd_putsf("SET SENSOR:  1/7");
 lcd_gotoxy(0,1);
 lcd_putsf("PIR_1=");
 if(blink==0){
 if(pir_kor==0){lcd_putsf("OFF       ");}
 if(pir_kor==1){lcd_putsf("ON        ");}}
 if(blink==1){lcd_putsf("          ");}
 button();
 if(dreb_2==15)pir_kor++;
 if(pir_kor>=2)pir_kor=0; 
 if(PINC.3==0){eep_pir_kor=pir_kor;dreb_0=6;w=200;}
}

void set_pir_tua (void)
{
 bli();          
 lcd_gotoxy(0,0);
 lcd_putsf("SET SENSOR:  2/7");      
 lcd_gotoxy(0,1);
 lcd_putsf("PIR_2=");
 if(blink==0){
 if(pir_tua==0){lcd_putsf("OFF       ");}
 if(pir_tua==1){lcd_putsf("ON        ");}}
 if(blink==1){lcd_putsf("          ");}
 button();
 if(dreb_2==15)pir_tua++;
 if(pir_tua>=2)pir_tua=0; 
 if(PINC.3==0){eep_pir_tua=pir_tua;dreb_0=6;w=200;}
}

void set_mic (void)
{
 bli();        
 lcd_gotoxy(0,0);
 lcd_putsf("SET SENSOR:  3/7");
 lcd_gotoxy(0,1); 
 lcd_putsf("Microphone=");
 if(blink==0){
 if(mic==0){lcd_putsf("OFF  ");}
 if(mic==1){lcd_putsf("ON   ");}}
 if(blink==1){lcd_putsf("     ");}
 button();
 if(dreb_2==15)mic++;
 if(mic>=2)mic=0; 
 if(PINC.3==0){eep_mic=mic;dreb_0=6;w=200;}
}

void set_gerkon_1 (void)
{
 bli();       
 lcd_gotoxy(0,0);
 lcd_putsf("SET SENSOR:  4/7");
 lcd_gotoxy(0,1);
 lcd_putsf("Switch_1=");
 if(blink==0){
 if(gerkon_1==0){lcd_putsf("OFF    ");}
 if(gerkon_1==1){lcd_putsf("ON     ");}}
 if(blink==1){lcd_putsf("       ");}
 button();
 if(dreb_2==15)gerkon_1++;
 if(gerkon_1>=2)gerkon_1=0;
 if(PINC.3==0){eep_gerkon_1=gerkon_1;dreb_0=6;w=200;}
}

void set_gerkon_1_ncno (void)
{
 bli();       
 lcd_gotoxy(0,0);
 lcd_putsf("SET SENSOR:  5/7");
 lcd_gotoxy(0,1);
 lcd_putsf("Type switch_1=");
 if(blink==0){
 if(gerkon_1_ncno==0){lcd_putsf("NO");}
 if(gerkon_1_ncno==1){lcd_putsf("NC");}}
 if(blink==1){lcd_putsf("     ");}
 button();
 if(dreb_2==15)gerkon_1_ncno++;
 if(gerkon_1_ncno>=2)gerkon_1_ncno=0;
 if(PINC.3==0){eep_gerkon_1_ncno=gerkon_1_ncno;dreb_0=6;w=200;}
}

void set_gerkon_2 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SENSOR:  6/7");
 lcd_gotoxy(0,1);
 lcd_putsf("Switch_2="); 
 if(blink==0){
 if(gerkon_2==0){lcd_putsf("OFF    ");}
 if(gerkon_2==1){lcd_putsf("ON     ");}}
 if(blink==1){lcd_putsf("       ");}
 button();
 if(dreb_2==15)gerkon_2++;
 if(gerkon_2>=2)gerkon_2=0;  
 if(PINC.3==0){eep_gerkon_2=gerkon_2;dreb_0=6;w=200;}
}

void set_gerkon_2_ncno (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SENSOR:  7/7");
 lcd_gotoxy(0,1);
 lcd_putsf("Type switch_2=");
 if(blink==0){
 if(gerkon_2_ncno==0){lcd_putsf("NO");}
 if(gerkon_2_ncno==1){lcd_putsf("NC");}}
 if(blink==1){lcd_putsf("  ");}
 button();
 if(dreb_2==15)gerkon_2_ncno++;
 if(gerkon_2_ncno>=2)gerkon_2_ncno=0;  
 if(PINC.3==0){eep_gerkon_2_ncno=gerkon_2_ncno;dreb_0=6;w=200;}
}
   
void set_save_sensors (void)
{
 s_save();
 if(PINC.3==0){eep_pir_tua=pir_tua;eep_pir_kor=pir_kor;eep_gerkon_1=gerkon_1;
 eep_gerkon_1_ncno=gerkon_1_ncno;eep_gerkon_2_ncno=gerkon_2_ncno;eep_mic=mic;
 eep_gerkon_2=gerkon_2;dreb_0=6;w=201;}
 if(PINC.5==0)w=0;
}

void set_time_pirk (void)
{           
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 1/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Time PIR_1=");
 if(blink==0){
 sprintf(buffer,"%03u",tpirk);
 lcd_puts(buffer);}
 if(blink==1){lcd_putsf("   ");} 
 lcd_putsf("s "); 
 button();
 if(dreb_2==15)tpirk++;
 if(dreb_2==400){dreb_2=370;tpirk++;} 
 if(PINC.3==0){eep_tpirk=tpirk;dreb_0=6;w=200;} 
}

void set_delay_pirk (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 2/18");
 lcd_gotoxy(0,1); 
 lcd_putsf("Delay PIR_1="); 
 if(blink==0){
 sprintf(buffer,"%03u",delay_kor);
 lcd_puts(buffer);}
 if(blink==1){lcd_putsf("   ");}
 lcd_putsf("s");
 button();
 if(dreb_2==15)delay_kor++;
 if(dreb_2==400){dreb_2=370;delay_kor++;}
 if(PINC.3==0){eep_delay_kor=delay_kor;dreb_0=6;w=200;}
}

void set_enable_kor_from (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 3/18");
 lcd_gotoxy(0,1);
 lcd_putsf("E.PIR_1 from=");
 if(blink==0){
 sprintf(buffer,"%02u",kor_from);
 lcd_puts(buffer);}
 if(blink==1){lcd_putsf("  ");}
 lcd_putsf("h");
 button();
 if(dreb_2==15)kor_from++;
 if(dreb_2==400){dreb_2=370;kor_from++;}
 if(kor_from>=24)kor_from=0; 
 if(PINC.3==0){eep_kor_from=kor_from;dreb_0=6;w=200;}
}

void set_enable_kor_to (void)
{             
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 4/18");
 lcd_gotoxy(0,1); 
 lcd_putsf("E.PIR_1 to=");
 if(blink==0){
 sprintf(buffer,"%02u",kor_to);
 lcd_puts(buffer);}
 if(blink==1){lcd_putsf("  ");}
 lcd_putsf("h  ");
 button();
 if(dreb_2==15)kor_to++;
 if(dreb_2==400){dreb_2=370;kor_to++;}
 if(kor_to>=24)kor_to=0;
 if(PINC.3==0){eep_kor_to=kor_to;dreb_0=6;w=200;}  
}

void set_time_pirt (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 5/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Time PIR_2=");
 if(blink==0){
 sprintf(buffer,"%03u",tpirt);
 lcd_puts(buffer);}
 if(blink==1){lcd_putsf("   ");}
 lcd_putsf("s ");  
 button();
 if(dreb_2==15)tpirt++;
 if(dreb_2==400){dreb_2=370;tpirt++;}
 if(PINC.3==0){eep_tpirt=tpirt;dreb_0=6;w=200;}
}

void set_time_remain (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 6/18");
 lcd_gotoxy(0,1);   
 lcd_putsf("Time remain="); 
 if(blink==0){
 sprintf(buffer,"%03u",timrem);
 lcd_puts(buffer);}
 if(blink==1){lcd_putsf("   ");}
 lcd_putsf("s");  
 button();
 if(dreb_2==15)timrem++;
 if(dreb_2==400){dreb_2=370;timrem++;} 
 if(PINC.3==0){eep_timrem=timrem;dreb_0=6;w=200;}
}

void set_time_ohr (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 7/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Time rele.3=");
 if(blink==0){
 sprintf(buffer,"%03u",time_ohr);
 lcd_puts(buffer);}
 if(blink==1){lcd_putsf("   ");}
 lcd_putsf("s");  
 button();
 if(dreb_2==15)time_ohr++;
 if(dreb_2==400){dreb_2=370;time_ohr++;} 
 if(time_ohr>=255||time_ohr==0)time_ohr=1;
 if(PINC.3==0){eep_time_ohr=time_ohr;dreb_0=6;w=200;}
}

void set_rele_1 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 8/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Rele.1=");
 if(blink==0){
 if(en_lustra==0){lcd_putsf("PIR_1    ");}
 if(en_lustra==1){lcd_putsf("button   ");}}
 if(blink==1){lcd_putsf("         ");}
 button();
 if(dreb_2==15)en_lustra++;
 if(en_lustra>=2)en_lustra=0;  
 if(PINC.3==0){eep_en_lustra=en_lustra;dreb_0=6;w=200;}
}

void set_enable_nochnik_rele_2 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM: 9/18");
 lcd_gotoxy(0,1);                          
 lcd_putsf("Rele.2=");
 if(blink==0){
 if(en_nochnik==0){lcd_putsf("PIR_2    ");}
 if(en_nochnik==1){lcd_putsf("job lamp ");}
 if(en_nochnik==2){lcd_putsf("alert*   ");}}
 if(blink==1){lcd_putsf("         ");}
 button();
 if(dreb_2==15)en_nochnik++;
 if(en_nochnik>=3)en_nochnik=0; 
 if(PINC.3==0){eep_en_nochnik=en_nochnik;dreb_0=6;w=200;}
}

void set_rele_3 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:10/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Rele.3=");
 if(blink==0){
 if(phone==0){lcd_putsf("contact  ");}
 if(phone==1){lcd_putsf("1 pulse  ");}
 if(phone==2){lcd_putsf("2 pulse  ");}
 if(phone==3){lcd_putsf("3 pulse  ");}
 if(phone==4){lcd_putsf("1 in 5min");}
 if(phone==5){lcd_putsf("1 in 1s* ");}
 if(phone==6){lcd_putsf("buzzer   ");}}
 if(blink==1){lcd_putsf("         ");}
 button();
 if(dreb_2==15)phone++;
 if(phone>=7)phone=0;  
 if(PINC.3==0){eep_phone=phone;dreb_0=6;w=200;}
}

void set_rele_4 (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:11/18");
 lcd_gotoxy(0,1);                          
 lcd_putsf("Rele.4=");
 if(blink==0){
 if(shkaf==1){lcd_putsf("timer    ");}
 if(shkaf==0){lcd_putsf("cabinet  ");}}
 if(blink==1){lcd_putsf("         ");}
 button();
 if(dreb_2==15)shkaf++;
 if(shkaf>=2)shkaf=0; 
 if(PINC.3==0){eep_shkaf=shkaf;dreb_0=6;w=200;}
}

void set_buzzer (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:12/18");
 lcd_gotoxy(0,1);          
 lcd_putsf("Buzzer alarm=");
 if(blink==0){
 if(buzzer==0){lcd_putsf("OFF");}
 if(buzzer==1){lcd_putsf("ON ");}}
 if(blink==1){lcd_putsf("   ");}
 button();
 if(dreb_2==15)buzzer++;
 if(buzzer>=2)buzzer=0; 
 if(PINC.3==0){eep_buzzer=buzzer;dreb_0=6;w=200;}
}

void set_count_eeprom (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:13/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Count eeprom=");
 if(blink==0){
 if(enprom==0){lcd_putsf("OFF");}
 if(enprom==1){lcd_putsf("ON ");}}
 if(blink==1){lcd_putsf("   ");}
 button();
 if(dreb_2==15)enprom++;
 if(enprom>=2)enprom=0; 
 if(PINC.3==0){eep_enprom=enprom;dreb_0=6;w=200;}
}
 
void set_tic_hour (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:14/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Tic in hour=");
 if(blink==0){
 if(en_tic_hour==0){lcd_putsf("OFF ");}
 if(en_tic_hour==1){lcd_putsf("ON  ");}}
 if(blink==1){lcd_putsf("    ");}
 button();
 if(dreb_2==15)en_tic_hour++;
 if(en_tic_hour>=2)en_tic_hour=0; 
 if(PINC.3==0){eep_en_tic_hour=en_tic_hour;dreb_0=6;w=200;}
}

void set_tic_kor (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:15/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Tic in PIR_1=");
 if(blink==0){
 if(en_tic_kor==0){lcd_putsf("OFF");}
 if(en_tic_kor==1){lcd_putsf("ON ");}}
 if(blink==1){lcd_putsf("   ");}
 button();
 if(dreb_2==15)en_tic_kor++;
 if(en_tic_kor>=2)en_tic_kor=0; 
 if(PINC.3==0){eep_en_tic_kor=en_tic_kor;dreb_0=6;w=200;}
}

void set_tic_tua (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:16/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Tic in PIR_2=");
 if(blink==0){
 if(en_tic_tua==0){lcd_putsf("OFF");}
 if(en_tic_tua==1){lcd_putsf("ON ");}}
 if(blink==1){lcd_putsf("   ");}
 button();
 if(dreb_2==15)en_tic_tua++;
 if(en_tic_tua>=2)en_tic_tua=0; 
 if(PINC.3==0){eep_en_tic_tua=en_tic_tua;dreb_0=6;w=200;}
}

void set_corr (void)
{
 bli();
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:17/18");
 lcd_gotoxy(0,1);   
 lcd_putsf("Corr.time=");
 if(cor>0){correct=cor;lcd_putsf("+");} 
 if(cor==0){correct=cor;lcd_putsf(" ");}
 if(cor<0){correct=(128-(cor&0b01111111));lcd_putsf("-");} 
 if(blink==0){sprintf(buffer,"%01u",correct);lcd_puts(buffer);}
 if(blink==1){lcd_putsf(" ");}
 lcd_putsf("s   ");  
 button();
 if(dreb_2==15)cor++;
 if(cor>=10&&cor<=20)cor=-9; 
 if(PINC.3==0){eep_cor=cor;dreb_0=6;w=200;}
}
        
void set_default (void)
{
 lcd_gotoxy(0,0);
 lcd_putsf("SET SYSTEM:18/18");
 lcd_gotoxy(0,1);
 lcd_putsf("Set in 0 press +");
 if(PINC.5==0){tpirk=0;tpirt=0;delay_kor=0;timrem=0;buzzer=0;phone=0;enprom=0;kor_from=0;
 kor_to=0;en_nochnik=0;en_lustra=0;time_ohr=1;shkaf=0;cor=0;en_tic_hour=0;en_tic_kor=0;
 en_tic_tua=0;delayt=0;lcd_clear();while(delayt<150)
 {lcd_gotoxy(0,0);lcd_putsf("Now all variable");lcd_gotoxy(0,1);
 lcd_putsf("set in 0x00...  ");}lcd_clear();} 
 if(PINC.3==0){dreb_0=6;w=0;}
}
                      
void set_save_settings (void)
{
 s_save();
 if(PINC.3==0){eep_tpirk=tpirk;eep_tpirt=tpirt;eep_delay_kor=delay_kor;eep_timrem=timrem;
 eep_buzzer=buzzer;eep_phone=phone;eep_time_ohr=time_ohr;eep_enprom=enprom;
 eep_kor_from=kor_from;eep_kor_to=kor_to;eep_en_nochnik=en_nochnik;eep_en_lustra=en_lustra;
 eep_shkaf=shkaf;eep_en_tic_hour=en_tic_hour;eep_en_tic_kor=en_tic_kor;
 eep_en_tic_tua=en_tic_tua;eep_cor=cor;dreb_0=6;w=201;}
 if(PINC.5==0)w=0;
}

void set_hour_nag_start (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_on(); 
 rem_start();
 lcd_gotoxy(0,1);
 if(blink==0){nag_start();}
 if(blink==1){
 sprintf(buffer,"  :%02u %02u.%02u.20%02u",min_nag_start,day_nag_start,month_nag_start,year_nag_start);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)hour_nag_start++; 
 if(dreb_2==400){dreb_2=370;hour_nag_start++;}
 if(hour_nag_start>=24)hour_nag_start=0;
 if(PINC.3==0){eep_hour_nag_start=hour_nag_start;dreb_0=6;w=200;} 
}

void set_min_nag_start (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_on();
 rem_start();
 lcd_gotoxy(0,1);
 if(blink==0){nag_start();}
 if(blink==1){
 sprintf(buffer,"%02u:   %02u.%02u.20%02u",hour_nag_start,day_nag_start,month_nag_start,year_nag_start);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)min_nag_start++;
 if(dreb_2==400){dreb_2=370;min_nag_start++;} 
 if(min_nag_start>=60)min_nag_start=0;
 if(PINC.3==0){eep_min_nag_start=min_nag_start;dreb_0=6;w=200;}
}

void set_day_nag_start (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_on(); 
 rem_start();
 lcd_gotoxy(0,1);
 if(blink==0){nag_start();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u   .%02u.20%02u",hour_nag_start,min_nag_start,month_nag_start,year_nag_start);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)day_nag_start++; 
 if(dreb_2==400){dreb_2=370;day_nag_start++;}
 if(day_nag_start>=32)day_nag_start=0;
 if(PINC.3==0){eep_day_nag_start=day_nag_start;dreb_0=6;w=200;}
}

void set_month_nag_start (void)
{       
 bli();           
 lcd_gotoxy(0,0);        
 rem_on();
 rem_start();
 lcd_gotoxy(0,1);
 if(blink==0){nag_start();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u %02u.  .20%02u",hour_nag_start,min_nag_start,day_nag_start,year_nag_start);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)month_nag_start++; 
 if(dreb_2==400){dreb_2=370;month_nag_start++;}
 if(month_nag_start>=13)month_nag_start=0;
 if(PINC.3==0){eep_month_nag_start=month_nag_start;dreb_0=6;w=200;}
}

void set_year_nag_start (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_on(); 
 rem_start();
 lcd_gotoxy(0,1);
 if(blink==0){nag_start();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u %02u.%02u.    ",hour_nag_start,min_nag_start,day_nag_start,month_nag_start);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)year_nag_start++; 
 if(dreb_2==400){dreb_2=370;year_nag_start++;}
 if(year_nag_start>=100)year_nag_start=0;
 if(PINC.3==0){eep_year_nag_start=year_nag_start;dreb_0=6;w=200;}
}

void set_hour_nag_fin (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_off(); 
 rem_fin();
 lcd_gotoxy(0,1);
 if(blink==0){nag_fin();}
 if(blink==1){
 sprintf(buffer,"  :%02u %02u.%02u.20%02u",min_nag_fin,day_nag_fin,month_nag_fin,year_nag_fin);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)hour_nag_fin++; 
 if(dreb_2==400){dreb_2=370;hour_nag_fin++;}
 if(hour_nag_fin>=24)hour_nag_fin=0;
 if(PINC.3==0){eep_hour_nag_fin=hour_nag_fin;dreb_0=6;w=200;}
}

void set_min_nag_fin (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_off();
 rem_fin();
 lcd_gotoxy(0,1);
 if(blink==0){nag_fin();}
 if(blink==1){
 sprintf(buffer,"%02u:   %02u.%02u.20%02u",hour_nag_fin,day_nag_fin,month_nag_fin,year_nag_fin);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)min_nag_fin++; 
 if(dreb_2==400){dreb_2=370;min_nag_fin++;}
 if(min_nag_fin>=60)min_nag_fin=0;
 if(PINC.3==0){eep_min_nag_fin=min_nag_fin;dreb_0=6;w=200;}
}

void set_day_nag_fin (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_off(); 
 rem_fin();
 lcd_gotoxy(0,1);
 if(blink==0){nag_fin();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u   .%02u.20%02u",hour_nag_fin,min_nag_fin,month_nag_fin,year_nag_fin);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)day_nag_fin++; 
 if(dreb_2==400){dreb_2=370;day_nag_fin++;}
 if(day_nag_fin>=32)day_nag_fin=0;
 if(PINC.3==0){eep_day_nag_fin=day_nag_fin;dreb_0=6;w=200;}
}

void set_month_nag_fin (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_off();
 rem_fin();
 lcd_gotoxy(0,1);
 if(blink==0){nag_fin();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u %02u.  .20%02u",hour_nag_fin,min_nag_fin,day_nag_fin,year_nag_fin);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)month_nag_fin++; 
 if(dreb_2==400){dreb_2=370;month_nag_fin++;}
 if(month_nag_fin>=13)month_nag_fin=0;
 if(PINC.3==0){eep_month_nag_fin=month_nag_fin;dreb_0=6;w=200;}
}

void set_year_nag_fin (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 rem_off();
 rem_fin();
 lcd_gotoxy(0,1);
 if(blink==0){nag_fin();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u %02u.%02u.    ",hour_nag_fin,min_nag_fin,day_nag_fin,month_nag_fin);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)year_nag_fin++; 
 if(dreb_2==400){dreb_2=370;year_nag_fin++;}
 if(year_nag_fin>=100)year_nag_fin=0;
 if(PINC.3==0){eep_year_nag_fin=year_nag_fin;dreb_0=6;w=200;}
}
  
void set_al_nag (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 lcd_putsf("Time  ON:");
 lcd_gotoxy(0,1);
 lcd_putsf("Time OFF:");
 if(blink==0){
 if(nag==0){lcd_gotoxy(9,0);lcd_putsf("disable");lcd_gotoxy(9,1);lcd_putsf("disable");}
 if(nag==1){lcd_gotoxy(9,0);lcd_putsf("enable ");lcd_gotoxy(9,1);lcd_putsf("disable");}
 if(nag==2){lcd_gotoxy(9,0);lcd_putsf("enable ");lcd_gotoxy(9,1);lcd_putsf("enable ");}}
 if(blink==1){lcd_gotoxy(9,0);lcd_putsf("       ");lcd_gotoxy(9,1);lcd_putsf("       ");}
 button();
 if(dreb_2==13)nag++;
 if(nag>=3)nag=0;
 if(PINC.3==0){eep_nag=nag;dreb_0=6;w=200;}
}
  
void set_save_nag (void)
{
 s_save();
 if(PINC.3==0){eep_min_nag_start=min_nag_start;eep_hour_nag_start=hour_nag_start;
 eep_day_nag_start=day_nag_start;eep_month_nag_start=month_nag_start;eep_year_nag_start=year_nag_start;
 eep_min_nag_fin=min_nag_fin;eep_hour_nag_fin=hour_nag_fin;eep_day_nag_fin=day_nag_fin;
 eep_month_nag_fin=month_nag_fin;eep_year_nag_fin=year_nag_fin;eep_nag=nag;
 dreb_0=6;w=201;}
 if(PINC.5==0)w=0;
}

void set_hour_rem_1 (void)
{  
 bli();           
 lcd_gotoxy(0,0);        
 lcd_putsf("REMINDER_1:  ");
 all_rem_1();
 lcd_gotoxy(0,1);
 if(blink==0){all_set_rem_1();}
 if(blink==1){
 sprintf(buffer,"  :%02u %02u.%02u.20%02u",min_rem_1,day_rem_1,month_rem_1,year_rem_1);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)hour_rem_1++; 
 if(dreb_2==400){dreb_2=370;hour_rem_1++;}
 if(hour_rem_1>=24)hour_rem_1=0;
 if(PINC.3==0){eep_hour_rem_1=hour_rem_1;dreb_0=6;w=200;}  
}

void set_min_rem_1 (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 lcd_putsf("REMINDER_1:  ");
 all_rem_1();
 lcd_gotoxy(0,1);
 if(blink==0){all_set_rem_1();}
 if(blink==1){
 sprintf(buffer,"%02u:   %02u.%02u.20%02u",hour_rem_1,day_rem_1,month_rem_1,year_rem_1);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)min_rem_1++; 
 if(dreb_2==400){dreb_2=370;min_rem_1++;}
 if(min_rem_1>=60)min_rem_1=0;
 if(PINC.3==0){eep_min_rem_1=min_rem_1;dreb_0=6;w=200;}
}

void set_day_rem_1 (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 lcd_putsf("REMINDER_1:  ");
 all_rem_1(); 
 lcd_gotoxy(0,1);
 if(blink==0){all_set_rem_1();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u   .%02u.20%02u",hour_rem_1,min_rem_1,month_rem_1,year_rem_1);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)day_rem_1++; 
 if(dreb_2==400){dreb_2=370;day_rem_1++;}
 if(day_rem_1>=32)day_rem_1=0;
 if(PINC.3==0){eep_day_rem_1=day_rem_1;dreb_0=6;w=200;}
}

void set_month_rem_1 (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 lcd_putsf("REMINDER_1:  ");
 all_rem_1(); 
 lcd_gotoxy(0,1);
 if(blink==0){all_set_rem_1();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u %02u.  .20%02u",hour_rem_1,min_rem_1,day_rem_1,year_rem_1);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)month_rem_1++; 
 if(dreb_2==400){dreb_2=370;month_rem_1++;}
 if(month_rem_1>=13)month_rem_1=0;
 if(PINC.3==0){eep_month_rem_1=month_rem_1;dreb_0=6;w=200;}
}

void set_year_rem_1 (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 lcd_putsf("REMINDER_1:  ");
 all_rem_1(); 
 lcd_gotoxy(0,1);
 if(blink==0){all_set_rem_1();}
 if(blink==1){
 sprintf(buffer,"%02u:%02u %02u.%02u.    ",hour_rem_1,min_rem_1,day_rem_1,month_rem_1);
 lcd_puts(buffer);}
 button();
 if(dreb_2==15)year_rem_1++; 
 if(dreb_2==400){dreb_2=370;year_rem_1++;}
 if(year_rem_1>=100)year_rem_1=0;
 if(PINC.3==0){eep_year_rem_1=year_rem_1;dreb_0=6;w=200;}
}

void set_al_rem_1 (void)
{
 bli();           
 lcd_gotoxy(0,0);        
 lcd_putsf("REMINDER_1:  "); 
 if(blink==0){all_rem_1();}
 if(blink==1)lcd_putsf("   ");
 lcd_gotoxy(0,1);
 all_set_rem_1();
 button();
 if(dreb_2==15)al_rem_1++; 
 if(dreb_2==400){dreb_2=370;al_rem_1++;}
 if(al_rem_1>=2)al_rem_1=0;
 if(PINC.3==0){eep_al_rem_1=al_rem_1;dreb_0=6;w=200;}
}

void set_save_rem_1 (void)
{
 s_save();
 if(PINC.3==0){eep_hour_rem_1=hour_rem_1;eep_min_rem_1=min_rem_1;eep_day_rem_1=day_rem_1;
 eep_month_rem_1=month_rem_1;eep_year_rem_1=year_rem_1;eep_al_rem_1=al_rem_1;dreb_0=6;w=201;}
 if(PINC.5==0)w=0;
}

void view_statistic_1 (void)
{
 lcd_gotoxy(0,0);
 sprintf(buffer,"PIR_1(kor)=%05u",count_pirkor);
 lcd_puts(buffer);
 lcd_gotoxy(0,1);
 sprintf(buffer,"PIR_2(tua)=%05u",count_pirtua);
 lcd_puts(buffer);
 if(PINC.5==0){count_pirkor=0;eep_count_pirkor=count_pirkor;count_pirtua=0;
 eep_count_pirtua=count_pirtua;} 
 if(PINC.3==0){dreb_0=6;w=0;}
}
                                               
void view_statistic_2 (void)
{
 lcd_gotoxy(0,0);
 sprintf(buffer,"Switch_1=%05u  ",count_gerkon_1);
 lcd_puts(buffer);
 lcd_gotoxy(0,1);
 sprintf(buffer,"Switch_2=%05u  ",count_gerkon_2);
 lcd_puts(buffer);
 if(PINC.5==0){count_gerkon_1=0;count_gerkon_2=0;eep_count_gerkon_1=count_gerkon_1;
 eep_count_gerkon_2=count_gerkon_2;}
 if(PINC.3==0){dreb_0=6;w=0;}
}                                             
                                              
void view_statistic_3 (void)
{
 lcd_gotoxy(0,0);
 sprintf(buffer,"Microphone=%05u",count_mic);     
 lcd_puts(buffer);                                            
 lcd_gotoxy(0,1);
 lcd_putsf("                ");
 if(PINC.5==0){count_mic=0;eep_count_mic=count_mic;}
 if(PINC.3==0){dreb_0=6;w=0;}
}

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
// State7=T State6=T State5=0 State4=1 State3=P State2=P State1=T State0=T 
PORTB=0x00;
DDRB=0x3F;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=In 
// State6=P State5=P State4=P State3=P State2=1 State1=1 State0=P 
PORTC=0x7F;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=1 State1=0 State0=0 
PORTD=0x00;
DDRD=0xF3;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 62,500 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x0C;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0xF4;
OCR1AL=0x23;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 15,625 kHz
// Mode: CTC top=OCR2A
// OC2A output: Disconnected
// OC2B output: Disconnected
ASSR=0x00;
TCCR2A=0x02;
TCCR2B=0x07;
TCNT2=0x00;
OCR2A=0x9B;
OCR2B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
// Interrupt on any change on pins PCINT8-14: Off
// Interrupt on any change on pins PCINT16-23: Off
EICRA=0x00;
EIMSK=0x00;
PCICR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;

// Timer/Counter 1 Interrupt(s) initialization
TIMSK1=0x02;

// Timer/Counter 2 Interrupt(s) initialization
TIMSK2=0x02;

// USART initialization
// USART disabled
UCSR0B=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
ADCSRB=0x00;
DIDR1=0x00;

// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: Int., cap. on AREF
// ADC Auto Trigger Source: Free Running
// Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On
// ADC4: On, ADC5: On
DIDR0=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA7;
ADCSRB&=0xF8;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 1
// RD - PORTB Bit 0
// EN - PORTD Bit 0
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);

// Global enable interrupts
#asm("sei")

countdown=21;
al_0=1;
r=1;
back=timrem;

day=eep_day;week=eep_week;month=eep_month;year=eep_year;
min_al_1=eep_min_al_1;hour_al_1=eep_hour_al_1;min_al_2=eep_min_al_2;hour_al_2=eep_hour_al_2;
min_al_3=eep_min_al_3;hour_al_3=eep_hour_al_3;min_al_4=eep_min_al_4;hour_al_4=eep_hour_al_4;
min_al_5=eep_min_al_5;hour_al_5=eep_hour_al_5;min_al_6=eep_min_al_6;hour_al_6=eep_hour_al_6;
min_al_7=eep_min_al_7;hour_al_7=eep_hour_al_7;al=eep_al;day_1_al=eep_day_1_al;
day_2_al=eep_day_2_al;day_3_al=eep_day_3_al;day_4_al=eep_day_4_al;day_5_al=eep_day_5_al;
day_6_al=eep_day_6_al;day_7_al=eep_day_7_al;count_gerkon_1=eep_count_gerkon_1;
count_gerkon_2=eep_count_gerkon_2;count_mic=eep_count_mic;count_pirkor=eep_count_pirkor;
count_pirtua=eep_count_pirtua;gerkon_2=eep_gerkon_2;pir_tua=eep_pir_tua;mic=eep_mic;
gerkon_1=eep_gerkon_1;gerkon_1_ncno=eep_gerkon_1_ncno;gerkon_2_ncno=eep_gerkon_2_ncno;
pir_kor=eep_pir_kor;tpirk=eep_tpirk;tpirt=eep_tpirt;delay_kor=eep_delay_kor;timrem=eep_timrem;
buzzer=eep_buzzer;phone=eep_phone;kor_from=eep_kor_from;kor_to=eep_kor_to;cor=eep_cor;
en_tic_hour=eep_en_tic_hour;en_tic_kor=eep_en_tic_kor;en_tic_tua=eep_en_tic_tua;
en_nochnik=eep_en_nochnik;en_lustra=eep_en_lustra;time_ohr=eep_time_ohr;shkaf=eep_shkaf;
enprom=eep_enprom;nag=eep_nag;hour_nag_start=eep_hour_nag_start;
min_nag_start=eep_min_nag_start;hour_nag_fin=eep_hour_nag_fin;min_nag_fin=eep_min_nag_fin;
day_nag_start=eep_day_nag_start;month_nag_start=eep_month_nag_start;
year_nag_start=eep_year_nag_start;day_nag_fin=eep_day_nag_fin;month_nag_fin=eep_month_nag_fin;
year_nag_fin=eep_year_nag_fin;hour_rem_1=eep_hour_rem_1;min_rem_1=eep_min_rem_1;
day_rem_1=eep_day_rem_1;month_rem_1=eep_month_rem_1;year_rem_1=eep_year_rem_1;al_rem_1=eep_al_rem_1;

define_char(char0,1);
define_char(char1,2);
define_char(char2,3);   //расположение моих символов
define_char(char3,4);
define_char(char4,5);
define_char(char5,6);
define_char(char6,7);
define_char(char7,8);
PORTB.0=1;
lcd_gotoxy(0,0);lcd_putsf("   SMART HOME   ");
lcd_gotoxy(0,1);lcd_putsf("    Ver. 3.0    ");
delay_ms(2000);
lcd_clear();

while (1)
 {     
  registr();    
  if(w==0)clock();
  if(w==1)ohrana();  
  if(w==2)monitor();             
  if(w==3)test_output();           
  if(w==4)alarm_set();
  if(w==5)sensor_set();
  if(w==6)system_set();
  if(w==7)timer_nagr();
  if(w==8)reminder_1();
     
  if(w==10)set_hour();
  if(w==11)set_min();
  if(w==12)set_day();
  if(w==13)set_month();
  if(w==14)set_year();                    
  if(w==15)set_week();                 
                                          
  if(w==20)set_pir_kor();
  if(w==21)set_pir_tua();
  if(w==22)set_mic();
  if(w==23)set_gerkon_1(); 
  if(w==24)set_gerkon_1_ncno();
  if(w==25)set_gerkon_2(); 
  if(w==26)set_gerkon_2_ncno();
  if(w==27)set_save_sensors();
    
  if(w==30)set_time_pirk();                                 
  if(w==31)set_delay_pirk();
  if(w==32)set_enable_kor_from();                   
  if(w==33)set_enable_kor_to();                
  if(w==34)set_time_pirt();                          
  if(w==35)set_time_remain();                             
  if(w==36)set_time_ohr(); 
  if(w==37)set_rele_1(); 
  if(w==38)set_enable_nochnik_rele_2();
  if(w==39)set_rele_3();                    
  if(w==40)set_rele_4();
  if(w==41)set_buzzer();
  if(w==42)set_count_eeprom();
  if(w==43)set_tic_hour();
  if(w==44)set_tic_kor();
  if(w==45)set_tic_tua();
  if(w==46)set_corr();
  if(w==47)set_default(); 
  if(w==48)set_save_settings();
  
  if(w==60)set_hour_nag_start();
  if(w==61)set_min_nag_start();                                
  if(w==62)set_day_nag_start();
  if(w==63)set_month_nag_start();
  if(w==64)set_year_nag_start();
  if(w==65)set_hour_nag_fin();                 
  if(w==66)set_min_nag_fin(); 
  if(w==67)set_day_nag_fin();
  if(w==68)set_month_nag_fin();
  if(w==69)set_year_nag_fin(); 
  if(w==70)set_al_nag(); 
  if(w==71)set_save_nag(); 
  
  if(w==80)view_timer_nag();  
  if(w==82)view_reminder_1();
  
  if(w==90)view_statistic_1();
  if(w==91)view_statistic_2();
  if(w==92)view_statistic_3();  
  
  if(w==100)set_hour_rem_1();
  if(w==101)set_min_rem_1();
  if(w==102)set_day_rem_1();
  if(w==103)set_month_rem_1();
  if(w==104)set_year_rem_1();
  if(w==105)set_al_rem_1();
  if(w==106)set_save_rem_1();
   
  if(w==110)set_al_on_off();                         
  if(w==111)set_hour_al_1();         
  if(w==112)set_min_al_1();                       
  if(w==113)set_day_1_al();
  if(w==114)set_hour_al_2();              
  if(w==115)set_min_al_2();                           
  if(w==116)set_day_2_al();                        
  if(w==117)set_hour_al_3();        
  if(w==118)set_min_al_3();                    
  if(w==119)set_day_3_al();                                         
  if(w==120)set_hour_al_4();                  
  if(w==121)set_min_al_4();
  if(w==122)set_day_4_al();                                           
  if(w==123)set_hour_al_5();                    
  if(w==124)set_min_al_5();                      
  if(w==125)set_day_5_al();
  if(w==126)set_hour_al_6();                                                        
  if(w==127)set_min_al_6();
  if(w==128)set_day_6_al();                 
  if(w==129)set_hour_al_7();                       
  if(w==130)set_min_al_7();
  if(w==131)set_day_7_al(); 
  if(w==132)set_save_al(); 
  
  if(w==140)view_temp();
  
  if(w==150)back_timer(); 
  
  if(w==160)time_correct(); 
  
  if(w==170)contr_eep();
  
  if(w==190)test_rele();   
  
  if(w==200)f_delay_0();         //реле включаются "0"
  if(w==201)f_delay_1();
  
  if(w==250)contr_alarm(); 
  if(w==252)contr_alarm_rem();
  
  spark=(sp&0b00010000); // мигание при охране или pirt pirk
  
  if(w!=150){  
  if(PINC.3==0||PINC.4==0||PINC.5==0){a=0;b=0;} //зажигание подсветки на 60 сек
  if(a>60){if(w==250||w==252){PORTB.0=blink;}else{if(((hour>=1&&hour<17)&&(week>=1&&week<=5))||((hour>=1&&hour<12)&&(week>=6&&week<=7))){PORTB.0=0;}else{PORTB.0=1;}}}else{PORTB.0=1;}
  if(a>200)a=67;  //С 17.00 до 01.00 по будням дисплей горит постоянно с 12.00 до 01.00
            }else{PORTB.0=1;}
  if((w>=2&&w<=132)&&b>60)w=0; //автовозврат в часы через 60 сек
  
  if(w!=1&&w!=190)rele_3=0;
  if(w!=1&&w!=0&&w!=150&&w!=170&&w!=250&&w!=252)PORTB.5=0;  
 }
}
                        