При быстром просмотре таблицы 0x4 - это вектор прерывания.Таким образом, вы должны поместить адрес кода, к которому вы хотите перейти, когда прерывание происходит по адресу 0x4, точно так же, как вы, вероятно, уже поместили адрес кода, к которому вы хотите перейти при сбросе, в 0x0.
Любое изменение на входе в PORTB может вызвать прерывание, если у вас установлен бит RBIE и соответствующий бит в IOCB.Вам нужно прочитать или написать PORTB (на практике вам, вероятно, захочется прочитать его и проверить значение бита 5, чтобы убедиться, что изменился переключатель), или очистить RBIF, чтобы завершить прерывание.
Итак: если вы включили соответствующее прерывание, оно срабатывает, когда обнаруживается, что значение с вашего переключателя изменилось.В этот момент процессор переходит на адрес, расположенный с 0x4.