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

 
 
 
«Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.»
Linus Torvalds
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы программирования 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Н.

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




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