/*****************************************************
Version : 3.0_2   12_
Date    : 20.11.2009  _2
Author  : Knazev33                                                                                                                                                                                                                                                                                                             
Comments:  GEIGER Gamma3 dev_1
Chip type           : ATmega8
Clock frequency     : 8,192000 MHz
*****************************************************/
#include <stdio.h> 
#include <mega8.h>
#include <delay.h>
#define key1 PINB.1        
#define key2 PINB.4    
#define key3 PINB.3    
#define key4 PINB.2  
  
#define key5 PINC.2  
 
#define light  PORTB.0    

#define generator  PORTC.0 
#define Rezonator PORTC.1  
#define beep  PORTC.5
//KEY1 V 
//KEY2 <
//KEY3 >
//KEY4 X  

//EEPROM  
eeprom unsigned int Mass[20] =
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};   //     eeprom  
eeprom unsigned int load1=100;    //        eeprom
eeprom unsigned char LoadTime=20;    //      eeprom 40_1 SBM
eeprom unsigned char Sound_bitEeprom=1;   //  
eeprom unsigned char Tx_bitEeprom=0;     //   
eeprom unsigned char AutoEccoEeprom=0;     //    
eeprom unsigned char AutoGenEeprom =1;     //   
 
//FLASH    
flash unsigned char  m1[4] ={2, 3, 4, 5};  //    3, 4, 5, 2
flash unsigned char  m2[7] ={6, 7, 8, 9, 10, 11, 12};  //  
//
unsigned int k=0; //  
unsigned int ecco=0; //  
unsigned char Index=1; //    
unsigned char sec=0; //   
unsigned char AlarmTime; //  
unsigned char butt;               //      ()
unsigned char butt_light;     //    , 
//
unsigned int rf=0; //     =  18
unsigned char j=0; //   
unsigned char Menu=1;  // 
unsigned int m_buffer=0;  // 
//
unsigned int tm[50];         //     
unsigned char tp=80;        //    
unsigned char ti=0;           //     
unsigned char ti2=0;        //     2 
unsigned int ts1;               //     
unsigned int ts2;              //           
unsigned int VoltLevel;                         //  
unsigned char a=0;         //   
unsigned char b=0;        //      
unsigned int g=0;           //    
unsigned char IndexHi;                //    
unsigned char IndexLo;                //     
unsigned char im1=0;                    //  
unsigned char im2=0;                   //   
unsigned char ecco2;                   //
//
unsigned int warn = 20;                //   
unsigned char TimeCount = 20;    //     1
//
bit ok=0;       // 
bit x=0;        // 
bit AlarmMode=1;    //      1-
bit Ce=0;    //   
bit sing;      //    :
bit bit_L;   //         
bit Alarm_is_On=0;  //   
bit Sound_bit;          // 
bit AutoGen_bit;      //  
bit StartADC=1;       //    
bit EccomBit;           //         
bit TX_PC_Bit;        //       
bit Tx_bit;
//
//
unsigned int ed_mass[15] ={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};    //    
unsigned char t_sec=0;                                                 //    
unsigned char hour;                                                      //    
unsigned char min;                                                       //  
unsigned char numm=0;                                                    //   
bit set_ed=0;                                                               //  / 
unsigned int ed=0;                                                           //   
unsigned int zamer=0;                                               //   
bit ed_ok=0;                                                                  //   
//
char lcd_buffer[133]; //    

//   
const unsigned char kirilTable[64]= {      
0x41, 0xA0, 0x42, 0xA1, 0xE0, 0x45, 0xA3, 0xA4, 0xA5, 0xA6, 0x4B, 0xA7, 0x4D, 0x48, 0x4F, 0xA8, 
0x50, 0x43, 0x54, 0xA9, 0xAA, 0x58, 0xE1, 0xAB, 0xAC, 0xE2, 0xAD, 0xAE, 0xAD, 0xAF, 0xB0, 0xB1, 
0x61, 0xB2, 0xB3, 0xB4, 0xE3, 0x65, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0x6F, 0xBE, 
0x70, 0x63, 0xBF, 0x79, 0xE4, 0x78, 0xE5, 0xC0, 0xC1, 0xE6, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7};

//----------------------------------------- --------------------------------
void my_beep(void) 
{    
  if(Sound_bit)
   {
        beep = 1;
        delay_ms(30);
        beep = 0;
   }   
}
//------------------------------------------------------------------------
void Get_light(void) 
{    
if(!key5){delay_ms(100); butt_light++; } else{ butt_light=0;}  //    
if(butt_light>10){   bit_L++; my_beep(); light=bit_L; butt_light=0; delay_ms(450);  } // /
}

//--------------------------------- --------------------------//
interrupt [ADC_INT] void adc_isr(void)
     {
VoltLevel=ADCW*5-ADCW/10;   //  
//VoltLevelProcent=5000;  // 100%   .  
//VoltProcentPrint=(VoltLevel*100)/VoltLevelProcent;  //    
if (StartADC==1)
{ADCSRA=0b11011111;}   //on
     }

//---------------------------------  0---------------------//
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xFF;       //  255
//
ecco++;             //       
//if(ecco>150){ Rezonator=0; }      //   
if((ecco>8990)&(AutoGen_bit))   //    ,  
{
generator=0;  //  
TCCR0=0x00;   // 0
ecco=0;           //  
 }
}

//------------------------------  2---------------------//
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
TCNT2=0xFF;  
ecco2++;                       // 
if(ecco2>150)              //  
{
 Rezonator=0;              //   
ecco2=0;                      // 
 TCCR2=0x00;             //  2
  }      
}

//------------------------------------   1------------------------------------//
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
//
sec++;                            //   

if(sec==TimeCount)  //    /------  -------/    
                   { 
m_buffer = k;                             //      
TX_PC_Bit = 1;                           //    
//--------------------------- ---""-----------//  
tm[ti]=k; ti++; ti2++;                      //     
if(ti>49){ti=0;}                              //  
if(tp>20){tp--;}else{};                   //  
ts1=tm[0]+tm[1]+tm[2]+tm[3]+tm[4]+tm[5]+tm[6]+tm[7]+tm[8]+tm[9]+tm[10]+tm[11]+tm[12]+tm[13]+tm[14]+tm[15]+tm[16]+tm[17]+tm[18]+tm[19]+tm[20]+tm[21]+tm[22]+tm[23]+tm[24]+tm[25]+tm[26]+tm[27]+tm[28]+tm[29]+tm[30]+tm[31]+tm[32]+tm[33]+tm[34]+tm[35]+tm[36]+tm[37]+tm[38]+tm[39]+tm[40]+tm[41]+tm[42]+tm[43]+tm[44]+tm[45]+tm[46]+tm[47]+tm[48]+tm[49];    //  
if(ti2<49){ts2=ts1/ti; }               //     1  
   else                                           // 
{ts2=ts1/49; }                             //     2   
if(ti2>254){ti2=90;}                   //  
//
if(ed_ok){ed_mass[numm]=k; numm++;}     //    
//
sec=0; k=0; j=0; rf=0;                 // 
TCCR1B=0x0D;   //  1
Ce=1;                  // 
//       
             
                  }   
//---------------------------   -----------------// 
if((sec>15)&(EccomBit))      //
{ //T_Menu=Menu;                //     
Menu=13; 
 //goto E;
 }                       //      
//---------------------------    ---------------------------------// 
if(ed_ok>0)                                                    //  
{
t_sec++;                                                          //  
sing++;                                                             //   
//                                                           //     
if(t_sec>59){t_sec=0; min++;}                       //   
if(min>59){min=0; hour++;}                            //    
if(hour>23)                                                    //    
{
//TCCR1B=0x00;                                               //   .
Ce=0;                                                             // 
set_ed=0;                                                      // 
ed_ok=0;                                                       // 
hour=0;                                                         //   
my_beep(); my_beep(); my_beep();              //        .
Mass[19]=zamer;                                          //**   ,  20 ...
//-------   ,   --------//
#asm("sei");                //   
TCCR1B=0x0D;            //   1
TCCR0=0x05;             //  0
Ce=1;                          //  
my_beep();                 // :)
//
 }  
 }               

if(numm>14)       //  5* (8  40 )
{
//    14   a.
ed=ed_mass[0]+ed_mass[1]+ed_mass[2]+ed_mass[3]+ed_mass[4]+ed_mass[5]+ed_mass[6]+ed_mass[7]+ed_mass[8]+ed_mass[9]+ed_mass[10]+ed_mass[11]+ed_mass[12]+ed_mass[13]+ed_mass[14];
// 
if(ed<200){ed=225;}     //                                            
//                                                           
zamer+=(ed/15)/12;             //      5* 
numm=0;
} 
            }   

///------------------------------------------ ------------------------------------
#asm
   .equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
//-------------------------------------  ---------------------------------

//------------------------------------- --------------------------------------//
interrupt [EXT_INT1] void ext_int1_isr(void)
{
//
TCCR0=0x05;   // 0    
if(Sound_bit){TCCR2=0x07; Rezonator=1;}   //     
generator=1;  //   ,  
//
if(Ce>0){k++;  j++;}  //      ,   
//
if(rf>500){rf=0;}         // ,    
// 
//if(m_buffer>500){AutoGen_bit=1;}else{AutoGen_bit=0;} //  
//
if(j>18){ rf++; j=0;}                    //   
if((k == warn)&(AlarmMode))      //        
{ 
//modul_lcd =1;                                 // 
lcd_init(16);                                  //  

Alarm_is_On =1;                         //    2 
Menu=2;
 }    
}

void dd_lcd(flash unsigned char *texti, unsigned char len ) 
{ unsigned char ii,P; 
for (ii=0;ii<len;ii++) { 
P= texti[ii]; 
if (P > 0x7F) P=kirilTable[texti[ii]-0xC0]; 
lcd_putchar(P); 
delay_ms(1); }        //10
}

void Get_Warn(void)         //     
{   
if((Alarm_is_On)&(AlarmMode))    // 
{ 
beep=1;                    //
light = 1;                   // 

//lcd_clear();              //  ()
delay_ms(400);         //   1 
//lcd_gotoxy(0,0); dd_lcd("  ",16);   
//lcd_gotoxy(0,1); dd_lcd("!      ",16); 
lcd_clear();  
beep=0;                     //
light = 0;                  //
AlarmTime++;            //  
delay_ms(400);         //   2
//lcd_clear();               // 
//    ----
if((!key1)|(!key2)|(!key3)|(!key4))
{Alarm_is_On=0; AlarmTime=0; AlarmTime=0; beep = 0;  light = 0;}  //  
if(AlarmTime > 20)    //  20 
{
beep = 0; 
light = 0;                   // 
AlarmTime=0;           // 
Alarm_is_On=0;       // 
}
}
}

//--------------------------------------------- ------------------------------------
void my_keys(void){
if(!key1){ok=1;}else{delay_ms(5); ok=0;}    // ok     
if(!key4){x=1;}else{delay_ms(5); x=0;}     // x        
                      

if(!key3){ Menu=m1[im1]; im1++; im2--; my_beep(); while(!key3){} delay_ms(50);    }   //   > 
if(im1>3){im1=0;}

if(!key2){Menu=m2[im2]; im2++; im1--; my_beep(); while(!key2){} delay_ms(50); }   //   <
if(im2>6){im2=0;}

}
//
void Usart (void)
{
if((TX_PC_Bit)&(Tx_bit)){                         
UCSRB=0x08;                                       // 8 1
UCSRC=0x86;
UBRRH=0x03;                                      //   600 
UBRRL=0x40;                                       //  
delay_ms(100);   
//
IndexLo =  m_buffer & 0xff;               //     
IndexHi = (m_buffer >> 8) & 0xff;       //       
putchar(0xE9);                                      //   3
putchar(IndexHi);                                 //    
putchar(IndexLo);                                 //    
//
delay_ms(100);                                     //
UCSRB=0x00;                                       // 
UCSRC=0x00;
UBRRH=0x00;
UBRRL=0x00; 
TX_PC_Bit =0; }           //    
}

//------------------------------------------ ----------------------------------------//
void main(void)
{
//modul_lcd=1;   //             
warn=load1;     //                    
if(!warn){AlarmMode = 0;}                //   
             else
             {AlarmMode = 1;}                //   
TimeCount = LoadTime;                  //        

Tx_bit = Tx_bitEeprom;                 //    
EccomBit=AutoEccoEeprom;          //   
AutoGen_bit = AutoGenEeprom;    // 

//PORTB=0xFF; //  
//DDRB=0x00;    
PORTB=0xFE;
DDRB=0x01;

PORTC=0x4C;    
DDRC=0x33;
PORTD=0xFF;  
DDRD=0x00;

//PORTC=(1<<1);    //   
//DDRC=(1<<0);     //    
Sound_bit = Sound_bitEeprom;     //     
//Rezonator = Sound_bit;                 //
//if(Sound_bitEeprom){Rezonator=0;}else{Rezonator=1;}   // 

ACSR=0x80;   //  

//---------------------------------------1-----------------------------------------------//
TCCR1B=0x0D;               // 8    8
/*OCR1AH=0x20;               //  
OCR1AL=0x03;*/               //  
OCR1A=8000;                                   //  800   ,1024
                                      
//-------------------------------------- 0--------------------------------------  
TCCR0=0x00;                  // 7.9    8
TCNT0=0xFF;                 //  255 
//-----------------------------------2------------------------------ 
TCCR2=0x00;                 //07
TCNT2=0xFF;                //  255 
//--------------------------------------------------------------------------
//TIMSK=0x11;                           //  
TIMSK=0x51;                              // 7-11-9
//-------------------------------------------------------------------------------------//
 ACSR=0x80; 
ADCSRA=0x00;    //off
ADMUX=0x03;   //  1 
//---------------------------------------------------------------------------------
GICR|=0x80;    //    
MCUCR=0x0C;   //
GIFR=0x80;     //
//
//MCUCR=(1<<7); //  Idle 
//MCUCR=(0<<7); //  Idle 
//
generator=1;   //   
//modul_lcd=1;   //  
lcd_init(16);     //  
//my_beep();   //  
delay_ms(500);         //

//lcd_clear();              //  
lcd_gotoxy(0,0); dd_lcd("  *3*  ",12); 
lcd_gotoxy(0,1); dd_lcd("  1.02",12);  
delay_ms(1000);   
// lcd_clear();              //  
//--------------- ---------------------------

//--------------------------------------------------------------//
for(rf=0; rf<12; rf++)
{delay_ms(100); lcd_gotoxy(rf,1); lcd_putsf("");   }  
rf=0;  
//

#asm("cli");                //    
while (1)          //--------------- ---------------------
{

 switch (Menu)   //    
  { 
case 1: //------------------------1-------------------------// 
                   
beep=0;           // 
Get_light();    //  
k=0;               //   
j=0;
sec=0; 
rf=0; 
//
//if((!key1)|(!key2)|(!key3)|(!key4))    //     
//{
my_beep();
delay_ms(500); 
Menu++;   
#asm("sei");                //   
TCCR1B=0x0D;            //   1
TCCR0=0x05;             //  0
Ce=1;                            //  
//sec=0; k=0; j=0; rf=0;   // 
//my_beep();
//}
break;   //  1 


case 2: //----------------- -------------------//   
my_keys(); 
Get_light(); 
Get_Warn();  
Usart();
//-------------     ------------------//
//
lcd_gotoxy(0,0); dd_lcd("",2);  //+
lcd_gotoxy(2,0);        //-
sprintf(lcd_buffer,"%5u ",m_buffer);
lcd_puts(lcd_buffer);  //   
//
lcd_gotoxy(8,0); dd_lcd("",1); 
lcd_gotoxy(9,0);
sprintf(lcd_buffer,"%3u",rf);
lcd_puts(lcd_buffer);  //  
//
lcd_gotoxy(0,1); dd_lcd("",2); 
lcd_gotoxy(2,1);             //?
sprintf(lcd_buffer,"%5u",k);
lcd_puts(lcd_buffer);  
// 
lcd_gotoxy(7,1);               //8
sprintf(lcd_buffer," T%2uc",sec);
lcd_puts(lcd_buffer); 
 // 


if(!key1)        //   -------------------------------------------------------------
{   
k=0; rf=0; j=0; sec=0;
#asm("sei");                //   
TCCR1B=0x0D;            //   1
TCCR0=0x05;             //  0
Ce=1;                            //  
//sec=0; k=0; j=0; rf=0;   // 
my_beep();
delay_ms(350);             //
}  

 if(!key4){                    // 
TCCR1B=0x00;            //   1
Ce=0;                         //      
beep=0;  
my_beep(); 
delay_ms(350);       

}                              
break;  //------------------------------  --------------------------//  

case 3:  //------------------ ---------------------//
my_keys();
Get_light();
Get_Warn(); 
Usart();
lcd_gotoxy(0,0); 
sprintf(lcd_buffer," %5u",ts2);   //      /
lcd_puts(lcd_buffer);
lcd_gotoxy(0,0); 
lcd_gotoxy(6,0); dd_lcd("+/-",3);
//
lcd_gotoxy(9,0); 
sprintf(lcd_buffer,"%2u",tp);   //       
lcd_puts(lcd_buffer);
//
lcd_gotoxy(0,1); dd_lcd("  " ,12);           
lcd_gotoxy(11,0); dd_lcd("%",1); 
//
//
break;  

case 4: // -------------------------    --------------------//
my_keys();                               // 
Get_light(); 
Get_Warn(); 
Usart();
//
lcd_gotoxy(0,0); 
sprintf(lcd_buffer,"%02u",hour);   //    
lcd_puts(lcd_buffer);
lcd_gotoxy(3,0); 
sprintf(lcd_buffer,"%02u  ",min);   //    
lcd_puts(lcd_buffer);
//
lcd_gotoxy(7,0); 
sprintf(lcd_buffer,"%5u",zamer);   //    
lcd_puts(lcd_buffer);
//
if(!set_ed)      //        //    
{
lcd_gotoxy(0,1); dd_lcd("   ",12); //  

}
                                               else    //     
                                               {
lcd_gotoxy(0,1); dd_lcd("        ",12);     //   

                                               }  
//      
if(!key1) { delay_ms(150); my_beep(); set_ed++;     //    
#asm("sei");  TCCR0=0x05;  TCCR1B=0x0D; ed_ok=1;   Ce=1;   }    //  0           
if((!key4)&(set_ed)){  ed_ok=0; set_ed++;  my_beep(); delay_ms(550); }   //
//
if((!key4)&(!set_ed)){delay_ms(100); butt++; } else{ butt=0;}  //    
if(butt>10){  t_sec=0; hour=0; min=0; numm=0;  zamer=0; my_beep(); delay_ms(450);} // 
//
if(!sing){lcd_gotoxy(2,0); lcd_putsf(":"); } else {lcd_gotoxy(2,0); lcd_putsf(" "); }  // 
//

break;  //---------------------------------    --------------------------------------//


case 5: //------------------EEPROM      -----------//
my_keys();
Get_light(); 
Get_Warn(); 
Usart();
lcd_gotoxy(4,0); 
sprintf(lcd_buffer,"%2u %5u",Index, Mass[Index]);//   
lcd_puts(lcd_buffer);
lcd_gotoxy(0,0); dd_lcd("" ,4);  
lcd_gotoxy(0,1); dd_lcd("    ^",12);      
//

if(ok)    //  
{  
Mass[Index] = m_buffer;       //    
my_beep();                             // 
delay_ms(250);
} 

if(x)                                     //    
{ 
Index++;                              //  
if(Index>20){Index = 1; }   //   
my_beep();                         // 
 delay_ms(250);                 //   
 }                   

break;  

  
case 6:  //----------------------     ---------------// 
//
my_keys();                                     // 
Get_light(); 
Get_Warn();  
Usart();
//

lcd_gotoxy(0,0); 
dd_lcd("",12); 
lcd_gotoxy(0,1); 
sprintf(lcd_buffer,"+ %5u",warn);   //      /
lcd_puts(lcd_buffer);     
lcd_gotoxy(7,1); dd_lcd(" -",5);
   
// 
if((!key1)&(!warn)){warn+=20;   load1=warn; delay_ms(50);   }   //    20,  10
if((!key1)&(warn<9300)){warn+=20;   load1=warn; delay_ms(100);   }   // +  
if((!key4)&(warn>=10)){warn-=20;  load1=warn;  delay_ms(100);  }     // -  
//
if(warn<20){warn =0; load1=warn; }   //    
if(!warn){AlarmMode = 0;}                //   
             else
             {AlarmMode = 1;}                //   

break;  

case 7:  
//-----------   -------------------// 
my_keys();
Get_light(); 
Get_Warn(); 
Usart();
lcd_gotoxy(0,0); dd_lcd("        ",12);              //
if(x){Sound_bit=0;   Sound_bitEeprom=0;  delay_ms(250);  }             //    1
if(ok){Sound_bit=1;  Sound_bitEeprom=1;  delay_ms(250);   }            //    0
if(Sound_bit){   lcd_gotoxy(0,1); dd_lcd("+       -",12); }        //
if(!Sound_bit){  lcd_gotoxy(0,1); dd_lcd("+      -",12);}    
//
break; 

case 8:  
//-----------     -------------------//  
my_keys();
Get_light(); 
Get_Warn();
Usart();
lcd_gotoxy(0,0); dd_lcd("  ",12);  
if(ok){Tx_bit=1;  Tx_bitEeprom=1; delay_ms(250);  }             //    1
if(x){Tx_bit=0;  Tx_bitEeprom=0; delay_ms(250);   }            //    0
if(Tx_bit){   lcd_gotoxy(0,1); dd_lcd("+       -",12); }        //
if(!Tx_bit){  lcd_gotoxy(0,1); dd_lcd("+      -",12);}    

break; 

case 9:  //-------------------   --------------------------// 

my_keys();                   // 
Get_light(); 
Get_Warn(); 
Usart();
//TimeForEconom++;
//if(TimeForEconom>254){my_beep(); rf=0; j=0; sec=0;  delay_ms(200);  Menu=11;}
delay_ms(100);     //
//lcd_gotoxy(0,0); dd_lcd("     ",16);   
//lcd_gotoxy(0,1); dd_lcd("   <  >  ",16);  
lcd_gotoxy(0,0); 
dd_lcd(" ",12);  
if(ok){EccomBit=1;  AutoEccoEeprom=1; delay_ms(250);  }             //    1
if(x){EccomBit=0;  AutoEccoEeprom=0; delay_ms(250);   }            //    0
if(EccomBit){   lcd_gotoxy(0,1); dd_lcd("+       -",12); }        //
if(!EccomBit){  lcd_gotoxy(0,1); dd_lcd("+      -",12);}   
//lcd_gotoxy(0,1); dd_lcd("<           >",16);
//if(!key1)                                                           //   
//{ my_beep(); rf=0; j=0; sec=0;  delay_ms(200);  Menu=12;}  //    "10
break;   
              
case 10:  //----------------    ---------------// 
//
 my_keys();                    // 
 Get_light(); 
 Get_Warn();  
 Usart();
//
lcd_gotoxy(0,0); 
dd_lcd("   ",12);    
lcd_gotoxy(0,1); 
sprintf(lcd_buffer,"+  %2u",TimeCount);   //      /
lcd_puts(lcd_buffer);
lcd_gotoxy(5,1); dd_lcd("   -",7);
 
if((!key1)&(TimeCount<24)){TimeCount++;  LoadTime=TimeCount;  delay_ms(250);   }
if((!key4)&(TimeCount>16)){TimeCount--;  LoadTime=TimeCount;  delay_ms(250);  } 
//if(!key2){ my_beep(); delay_ms(250); Menu=2; }     //    

break;  


case 11:  
//-----------   -------------------//  
my_keys();
Get_light(); 
Get_Warn();
lcd_gotoxy(0,0); dd_lcd("",12);              //
if(ok){AutoGen_bit=1;  AutoGenEeprom=1; delay_ms(250);  }             //    1
if(x){AutoGen_bit=0;  AutoGenEeprom=0; delay_ms(250);   }            //    0
if(AutoGen_bit){   lcd_gotoxy(0,1); dd_lcd("+       -",12); }        //
if(!AutoGen_bit){  lcd_gotoxy(0,1); dd_lcd("+      -",12);}    
//
break; 

case 12:

 Get_light(); 
 Get_Warn(); 
 Usart(); 
 
 #asm("sei");        //   
ADMUX=3;
StartADC=1;       //..
ADCSRA=0b11011111; 
delay_ms(30); 
 //------------------------ ---------//
lcd_gotoxy(0,0);  dd_lcd("    ",12);    
lcd_gotoxy(0,1); 
//sprintf(lcd_buffer,"<    %4umB    >",VoltLevel);   //      
//lcd_puts(lcd_buffer);
//
a=0;                //   
b=0;               //  
g=VoltLevel;  //  
while(g>=1000){a=a+1; g=g-1000; }     //  
while(g>=100){b=b+1; g=g-100; }         //  
lcd_gotoxy(0,1);   
sprintf(lcd_buffer,"<   %1u.""%1uB   >",a,b);//     
lcd_puts(lcd_buffer);    
delay_ms(10);
//  
 StartADC=0;     //  
 ADCSRA=0x00; 
 ACSR=0x00; 
ADMUX=0x00;   //       

 my_keys();                    // 
//if(!key2){ my_beep(); delay_ms(250); Menu=2; }     //    

break;  

case 13:  //-------------------   --------------------------// 

 Get_Warn();  
// Usart();
//SleepMode = 1;           //      , -     
lcd_clear();               // 
//modul_lcd=0;            //   
//a2=0;                       //   
light=0;                  //  
//
TCCR1B=0x0D;   //  1
Ce=1;                  // 
//
delay_ms(100);     // 
//--------------    -----------------//
//MCUCR=(1<<7);    //  Idle 
//#asm("sleep");    //   
//MCUCR=(0<<7);   //  Idle 
// ---------------------------------------------------------------------------------//

if((!key1)|(!key2)|(!key3)|(!key4))               //     
{
delay_ms(100);         //   1
//modul_lcd=1;                    //   
lcd_init(16);                  //      
//
//my_beep();
//SleepMode = 0;                 //      
Menu=9;                        //     8   
//Menu=T_Menu;                 //    
}    

break;   
//  


}                                 //      
 };                               //     
 }                                //     