interrupt [TIM1_OVF] void timer1_ovf_isr(void){
static unsigned char cnt_ms_butt=20;    //      20 .
TCNT1 -= 4000;          //    1 .
//----------------------//
if(!--cnt_ms_butt){     //  20- . 
    cnt_ms_butt=20;
    mButt_1.cur = (PORT_BUTT_1&(1<<PIN_BUTT_1))!=0;                 //    .
                                                                    //     , ..      .
    if((mButt_1.cur==ACT_BUTT_LEV) && (mButt_1.prev!=ACT_BUTT_LEV) && timer<10) //    - ""   - " "
        mButt_1.down = 1;                                                   //   down
    if((mButt_1.cur!=ACT_BUTT_LEV) && (mButt_1.prev==ACT_BUTT_LEV)&& timer<10) //    - " "   - ""
        mButt_1.up = 1;                                                     //   up
   if((mButt_1.cur==ACT_BUTT_LEV) && (mButt_1.prev==ACT_BUTT_LEV)){
      timer++;
      if(timer>10) mButt_1.but_long = 1;
      }

    mButt_1.prev=mButt_1.cur;                                       //   .      
}
//----------------------//
}