В регистрах PIC TRIS бит, установленный на 1, означает ввод, а 0 - вывод.Вы устанавливаете TRISB = 0b00110000, который является всеми выходами на порту B, кроме RB5 и 4, которые являются входами.Если вам нужен RB3 в качестве цифрового входа, вам нужно установить TRISB = 0b00111000.Считаются биты b7, b6, b5, b4, b3, b2, b1, b0.
Однако вы ожидаете, что RB3 запустит RBIF, что не так, как я объяснил здесь ,Таким образом, у вас есть только RB5 и 4, которые будут запускать RBIF, но если бы RB3 был низким в это время, он переключал бы D1 и A2.Так что переместите этот код в основной цикл, как я предлагал, пока он не заработает, а затем заставьте его работать с прерываниями.
Как говорит ChrisJ, некоторые выводы по умолчанию используются для аналогового ввода, если вы не отключите его, поэтому вы не получите цифровой входи прерывание при смене контакта, которое вы ожидаете, используя ADCON1