Понимание прерываний / обработчиков прерываний, PIC - PullRequest
1 голос
/ 22 марта 2011

Я понимаю, что такое прерывание, но не то, как оно работает или как оно реализовано. Я использую PIC16F886, и мой коммутатор подключен к биту 5 в TRISB. С этим я понимаю, что мне нужно сделать небольшую настройку, прежде чем произойдет прерывание. RB0-3 - это светодиоды, а RB4-7 - для прерываний / переключения.

При этом я знаю, что мне нужно разрешить прерывания в INTCON установка битов GIE, INTF, и я считаю RBIE, а не INTE, потому что RB0 используется светодиодом? Но я не уверен.

Моя главная проблема: как срабатывает прерывание? Кроме того, такие вещи, как орг 0x04. Каково значение этого в прерывании? Это важные детали, которые просто ускользают от меня, но без них я не смогу продолжить. Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 22 марта 2011

При быстром просмотре таблицы 0x4 - это вектор прерывания.Таким образом, вы должны поместить адрес кода, к которому вы хотите перейти, когда прерывание происходит по адресу 0x4, точно так же, как вы, вероятно, уже поместили адрес кода, к которому вы хотите перейти при сбросе, в 0x0.

Любое изменение на входе в PORTB может вызвать прерывание, если у вас установлен бит RBIE и соответствующий бит в IOCB.Вам нужно прочитать или написать PORTB (на практике вам, вероятно, захочется прочитать его и проверить значение бита 5, чтобы убедиться, что изменился переключатель), или очистить RBIF, чтобы завершить прерывание.

Итак: если вы включили соответствующее прерывание, оно срабатывает, когда обнаруживается, что значение с вашего переключателя изменилось.В этот момент процессор переходит на адрес, расположенный с 0x4.

...