Реализация прерываний

Микроконтроллер 8XC196NP выполняет процедуру прерывания при поступлении запросов, которые могут быть вызваны одной из 17 возможных причин, перечисленных в  1.14. Три из этих запросов являются немаскируемыми — это внешний сигнал на входе NMI, ввод неразрешенного кода операции и поступление команды прерывания TRAP. Данные запросы обслуживаются сразу после их поступления при любом значении признака I в слове состояния (PSW). Остальные 14 запросов являются маскируемыми — их обслуживание можно запретить соответствующей маской, которая заносится в регистры масок INT MASK, INT MASK1. Разрешение или запрещение обслуживания всех маскируемых запросов производится командами EI, DI, которые устанавливают соответствующее значение признака I s 1 или 0 в слове (PSW). К маскируемым относятся запросы, возникающие при поступлении внешних сигналов EXTINT3.0, сигналов от таймеров: OVRTMR1,2, процессора событий (ПРС): ЕРА3.0, OVR2-3,0—1, запросы на последовательный ввод или вывод данных от блока последовательного обмена (БПО): RI, TI.

Поступление сигнала NMI и маскируемых запросов фиксируется установкой «1» в соответствующем разряде 8-разрядных регистров INT PEND, INT PEND1, которые размещаются в младшем файле, имея номера 09Н, 12Н (см.  1.3). Формат содержимого этих регистров показан на  1.8. Когда начинается обслуживание поступившего запроса, соответствующий разряд в регистрах INT PEND, INT PEND1 сбрасывается в «0». Маскирование запросов осуществляется с помощью 8-разрядных регистров INT MASK, INT MASK1, имеющих номера 08Н, 13Н в младшем файле, в которые загружается маска прерываний.Значение «1» в соответствующем разряде маски разрешает обслуживание данного прерывания, «0» — запрещает обслуживание. Форматы регистров INT MASK, INT MASK1 полностью аналогичны форматам регистров INT PEND, INT PEND1. Следует только отметить, что бит 7 в регистре INT MASK1 не влияет на обслуживание прерывания NMI, которое является немаскируемым (рекомендуется записывать в этот разряд «0»).

Следует помнить, что при выполнении команды PUSHF разряды регистра INT MASK сбрасываются в «0», а при выполнении команды PUSHA сбрасываются в «0» разряды обоих регистров INT MASK, INT MASK1. Поэтому после выполнения этих команд требуется загрузка данных регистров для маскирования последующих прерываний.

Внешние сигналы прерывания EXT INTO, 1, 2, 3 поступают на соответствующие выводы портов Р2, РЗ, если эти порты запрограммированы на выполнение специальных функций. Запрос на прерывание формируется при поступлении на сответствующий вход положительного фронта сигнала, который затем должен сохранять высокий уровень потенциала в течение не менее одного такта синхронизации.

Comments are closed.