Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория микропроцессорных систем АТ_Методическое...docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
3.72 Mб
Скачать

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

Обработка асинхронных событий, которые происходят в произвольные моменты времени, в МК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Н.

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

Разрешение обработки запросов прерываний

Часто в практических задачах необходимо запретить или разрешить прерывание от тех или других источников во всей программе (на протяжении ее работы) или в отдельных фрагментах. Эти действия называются маскированием запросов прерываний. Для разрешения обслуживания запросов используют биты регистра разрешения прерываний (РРП) с символическим именем IE (рис.16.3.):

Таблица 16.1

Назначение битов РРП – регистра IE

Имя бита

Позиция

Назначение

ЕА

-

ES

ET1

ЕХ1

ЕТ0

ЕХ0

IE.7

IE.6, IE.5

IE.4

IE.3

IE.2

IE.1

IE.0

Разрешение / блокировка прерываний.

ЕА=1 - разрешение прерываний определяется битами IE.4 – IE.0. При EA=0 все прерывания запрещены

Эти биты не используются

Разрешение прерываний от УАПП (по ТI или RI).

Разрешение прерывания от таймера 1

(по биту TF1)

Разрешение внешнего прерывания 1 (по входу #INT1 через бит IE1 (бит TCON.3))

Разрешение прерывания от таймера 0

(по биту TF0)

Разрешение внешнего прерывания 0 (по входу #INT0 через бит IE0 (бит TCON.1))

Для всех битов: "1" - разрешение обработки, "0" - запрет обработки