Вы читаете обратно значение output на B7, что не имеет большого смысла. B7 будет чистым (низким), если вы не установите его в коде, чтобы с B7 не происходило никаких изменений. В любом случае изменения выходной защелки для B7 не вызовут RBIF.
RBIF устанавливается, когда любой из RB7-RB4 меняет состояние. Вы объявили RB5 и RB4 в качестве входных данных, так почему бы вам не прочитать один из них при запуске RBIF?
if (PORTBbits.RB5 == 1)
LATDbits.LATD1 ^= 1;
Если у вас возникли проблемы с функцией прерывания при изменении порта, просто попробуйте следующую строку в коде основного цикла, чтобы подтвердить свой ввод-вывод.
LATDbits.LATD1 = PORTBbits.RB5;
Если ваше оборудование не имеет подтягиваний или опусканий, вы должны включить слабые подтягивания на порте B, используя флаг RBPU в INTCON2. Обратите внимание, что они автоматически отключаются, когда вы объявляете вывод выводом.