static unsigned char bcd[] =
{
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0
};
unsigned char _7seg[] =
{ //nGFEDCBA
  0b11000000,//sıfır/0
  0b11111001,//bir/1
  0b10100100,//iki/2
  0b10110000,//üç/3
  0b10011001,//dört/4
  //nGFEDCBA
  0b10010010,//beş/5
  0b10000010,//altı/6
  0b11111000,//yedi7
  0b10000000,//sekiz8
  0b10010000,//dokuz9
  0b00000000,//lamba TEST10
  0b11111111,//lamba OF11
};
//bool msb = 0;
//bool mso = 0;
bool snb = 0;
bool sno = 0;
static void bcd_inc(unsigned char* bcd)
{
  ++bcd[0];//her zaman kesmesinde 1 arttır
  // msb == 1;
  if (bcd[0] == 10)//10 kere zaman kesmesinde(100ms) olunca BİRLER BASAMAĞI
  {
    bcd[0] = 0;//1 LER BASAMAĞINI SIFIRLA
    ++bcd[1];//ONLAR BASAMAĞI 1 ARTTIR
    //mso == 1;
    if (bcd[1] == 10)//ONLAR BASAMAĞI 10 OLDUYSA 100x10 = 1000mS= 1 SANIYE
    {
      bcd[1] = 0; //10LAR BASAMAĞI SIFIRLAMA
      ++bcd[2]; // SANIYE BIRLER BASAMAĞI
      snb = 1;
      if (bcd[2] == 10)//SANIYE BIRLER BASAMAĞI 10 OLDUYSA
      {
        bcd[2] = 0;
        ++bcd[3];//SANİYE ONLAR BASAMAĞINI 1 ARTTIR
        sno = 1;
        if (bcd[3] == 6)//SANIYE 10LAR BASAMAĞI 6 OLDUYSA YANI 1 DAKIKA
        {
          bcd[3] = 0;
          ++bcd[4];//DAKIKA BİRLER BASAMAĞI 1 ARTTIR
          if (bcd[4] == 10)//DAKIKA BIRLER BASAMAĞI 10 OLDUYSA
          {
            bcd[4] = 0;
            ++bcd[5];//DAKIKA ONLAR BASAMAĞI 1 ARTTIR
            if (bcd[5] == 6)//DAKIKA ONLAR BASAMAĞI 6 OLDUYSA YANİ 1 SAAT
            {
              bcd[5] = 0;
              ++bcd[6];//SAAT BIRLER BASAMAĞI 1 ARTTIR
              if ((bcd[6] == 4) && (bcd[7] == 2)) // EĞER SAAT 24 OLDUYSA
              {
                bcd[6] = bcd[7] = 0;//SAATI SIFIRLA
              }
              else if (bcd[6] == 10)
              {
                bcd[6] = 0;
                ++bcd[7];
              }
            }
          }
        }
      }
    }
  }
}
ISR(TIMER1_COMPA_vect) {
  bcd_inc(bcd);
}
void setup()
{
  DDRD = B11111111; //büTÜN D PORTI ÇIKIŞ
  DDRB = DDRB | B00001111;//8-9-10-11 çıkış
  noInterrupts();
  TCCR1A = 0;
  TCNT1 = 0;
  OCR1A = 16000000 / (100 * 64) - 1;
  TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10);
  TIMSK1 |= (1 << OCIE1A);
  interrupts();
}
void loop()
{
  PORTB = 0B00001011;//10
  PORTD = _7seg[bcd[0]];
  delay(3);//tarama ayar;
  PORTB = 0B00000111;//11
  PORTD = _7seg[bcd[1]];
  delay(3);//tarama ayar
  if (snb == 1) {
    PORTB = 0B00001101;//9
    PORTD = _7seg[bcd[2]];
    delay(3);//tarama ayar
    snb == 0;
  }
  if (sno == 1) {
    PORTB = 0B00001110;//8
    PORTD = _7seg[bcd[3]];
    delay(3);//tarama ayar
    sno == 0;
  }
}