ISR(TIMER1_CAPT_vect){
  TCNT1 = 0;
  dht_save_time_id++;

  if ( dht_save_time_id  > 3 )
  {
    dt[dtcnt] = ICR1<<8;
    dtcnt++;
    if ( ICR1<1500 )  
    { 
      data[dNum] &= ~(1<<dPos); 
    } // 0
    else            
    {
       data[dNum] |=  (1<<dPos); 
    } // 1
    dPos--;
    if ( dPos < 0)   
    {
       dPos=7; dNum++; 
    }
  }
  if ( dht_save_time_id  == 42 )
  {
    interrupt_flag++;
    dht_check_act = true;
    dht_done = true;

    DHT_DDR  |= (1 << DHT_BIT);    //  Пин как выход
    DHT_PORT |= (1 << DHT_BIT);   //  Выход HIGH
  }

}
// Прерывание таймера  
ISR(TIMER0_COMPA_vect)
{
  TCNT0 = 0;
  dht_en_timer++;
  if ( dht_en_timer >= 65)
  {
    dht_en_timer =0;
    dht_done = false;
    dtcnt=0;
    interrupt_flag = 1;
    dht_check_act = true;
    DHT_DDR  |= (1 << DHT_BIT);    //  Пин как выход
    DHT_PORT |= (1 << DHT_BIT);   //  Выход HIGH
    dht_save_time_id = 0;
  }
}  
  
// Прерывание таймера  
ISR(TIMER1_COMPA_vect)
{
  TCNT1 = 0;
  dht_check_act = true;
  TCCR1B = 0b00000000;
  if ( interrupt_flag < 3 )
  {
    interrupt_flag++;
  }
}
  
  
// Установка таймера  
void setup_timer()  
{  
  // Настраиваем таймер 1 в режиме CTC  
  TCCR0B = 0b00000101;  
  // Устанавливаем значение сравнения для частоты 1 Гц  
  OCR0A = 250;  
  // Разрешаем прерывание сравнения A  
  TIMSK0 |= (1 << OCIE0A);  

  // Настраиваем таймер 1 в режиме CTC  
  TCCR1A = 0b00000000;
  TCCR1B = 0b00000000;  
  // Устанавливаем значение сравнения для частоты 1 Гц  
  OCR1A = 250;  
  // Разрешаем прерывание сравнения A  
  TIMSK1 = 0b00100010;  
}