Вы правильно настроили PORT B, но не помешало бы немного улучшить ваши соглашения по кодированию.
DDRB&= ~(1<<PB0)|(1<<PB1);
PORTB|= (1<<PB0)|(1<<PB1);
Если я не понимаю, чего вы пытаетесь достичь, я недумаю, что ваши прерывания настроены правильно.
PB4 и PB5 соответствуют PCINT12 и PCINT13 соответственно.
Поскольку оба соответствуютPin Change Interrupt Enable 1, вы хотите включить только этот контакт.
EIMSK = (1<<PCIE1);
На самом деле вам не нужно устанавливать EIFR , если только вы не пытаетесь вручную вызвать прерывание.Этот регистр автоматически помечается при каждом изменении пина.
В PCMSK1 , которые вы хотите установить PCINT13 и PCINT12
PCMSK1 |= (1<<PCINT12)|(1<<PCINT13);
Это разрешает прерывания на соответствующих выводах.
Также SIGNAL не рекомендуется.#include avr / interrupt.h и использовать ISR.
ISR(PCINT1_vect){}
Оба изменения Pin будут обрабатываться этим вектором.
Надеюсь, это немного прояснит ситуацию.