void setup() {
  Serial.begin(9600);
  pinMode(8, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  attachPCINT(5);
  attachPCINT(6);
}

void loop() {
  Serial.println("NOP");
  delay(200);

}

// пример использования PCINT - прерывания на любом пине
// прерывание вызывается при переключении состояния любого пина из группы

// наши обработчики прерываний
ISR(PCINT0_vect) {  // пины 8-13

}
ISR(PCINT1_vect) {  // пины A0-A5

}
ISR(PCINT2_vect) {  // пины 0-7
  if (!pinRead(5)) {
    Serial.println("PCINT INTERRUPT D5");
    digitalWrite(8, HIGH);
    delay(100);
    digitalWrite(8, LOW);
  }
  if (!pinRead(6)) {
    Serial.println("PCINT INTERRUPT D6");
    digitalWrite(7, HIGH);
    delay(100);
    digitalWrite(7, LOW);
  }

}

// функция для настройки PCINT
uint8_t attachPCINT(uint8_t pin) {
  if (pin < 8) {            // D0-D7 (PCINT2)
    PCICR |= (1 << PCIE2);
    PCMSK2 |= (1 << pin); return 2;
  }
  else if (pin > 13) {    //A0-A5 (PCINT1)
    PCICR |= (1 << PCIE1);
    PCMSK1 |= (1 << pin - 14);
    return 1;
  } else {                  // D8-D13 (PCINT0)
    PCICR |= (1 << PCIE0);
    PCMSK0 |= (1 << pin - 8);
    return 0;
  }
}


// быстрый digitalRead для опроса внутри ISR
// пригодится для проверки конкретного пина
bool pinRead(uint8_t pin) {
  if (pin < 8) {
    return bitRead(PIND, pin);
  } else if (pin < 14) {
    return bitRead(PINB, pin - 8);
  } else if (pin < 20) {
    return bitRead(PINC, pin - 14);
  }
}