Микропроцессоры и микроконтроллеры

 
 
 
«Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.»
Brian W. Kernighan.
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы программирования MSC-51 :: Назначение и принципы функционирования системы прерываний

Назначение и принципы функционирования системы прерываний

Обработка асинхронных событий, которые происходят в произвольные моменты времени, в МК51, как и в других МП, реализована через систему прерываний, которая функционирует согласно логике, показанной на рис. 16.1:

Источниками запроса на прерывание в МК51 могут быть:

- внешние устройства, которые подают сигналы запроса на прерывание через входы #INT0 и #INT1 (аварийные ситуации, готовность данных);

-         таймеры путем установки флагов запроса TF0 и TF1 в случае переполнения;

-         УАПП, путем формирования флагов TI и RI при завершении передачи и приема соответственно.

Использование системы прерываний позволяет организовать параллельную и независимую работу процессора и периферийных устройств (T/С, УАПП, внешние схемы) таким образом, что эти устройства, работая одновременно с процессором, информируют его об окончании очередного цикла (фазы) своей работы сигналами запроса на прерывание. Схематически и упрощенно логика работы системы прерываний МК51 показана на рис.16.2 или рис 29 в комплекте.

Внешние запросы на прерывание, которые поступают на входы #INT0 и #INT1, фиксируются или по уровню сигнала (0), или по срезу (из 1 в 0) в зависимости от значения битов IT0 и IT1 регистра TCON. В любом случае от внешних прерываний устанавливаются флаги-фиксаторы запроса IE0 и IE1 в регистре TCON.

Установка флагов-фиксаторов IE0 и IE1 в 1 инициирует вызов процедуры обработки прерывания, то есть формирует аппаратную команду LCALL 0003H или 0013Н. По адресу 0003H и 0013H обычно находится команда JMP на соответствующую процедуру.

Сброс IE0 и IE1 выполняется аппаратно, если прерывание вызвано срезом сигнала (то есть при IT0=1 и IT1=1) или должно выполняться программой обслуживания прерывания путем воздействия на источник прерывания с целью отмены им сигнала запроса.

Флаги прерывания от таймеров TF0 и TF1 устанавливаются аппаратно при переполнении таймерных регистров и сбрасываются аппаратно при передаче управления процедуре обслуживания. Векторы перехода на соответствующие процедуры (то есть команда JMP adr) должны находиться по адресам 000ВН для прерывания TF0 и 001BH для прерывания TF1.

Флаги запросов прерывания при завершении передачи из УАПП - TI и завершение приема в УАПП - RI устанавливаются аппаратно блоком управления УАПП. Запросы объединяются по ИЛИ в общий запрос прерывания от УАПП. Идентификация источника запроса должна выполняться в процедуре обработки (обработка прерывания с программным поиском источника). Флаги TI и RI также должны сбрасываться процедурой обработки. Вектор перехода при прерывании от УАПП должен находиться по адресу 0023Н.

Прерывания также могут быть вызваны или отменены программно, поскольку все перечисленные флаги программно доступны и могут изменяться программой с тем же эффектом, что и аппаратными средствами.




<< Предыдущая статья
«Описание режимов работы УАПП»