Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Система прерываний MК51



Упрощенная схема прерываний показана на рис. 4.3. В системе прерываний задействованы некоторые биты регистров TCON, IE, IP, SCON.

Внешние прерывания по входам INT0 и INT1 могут быть вызваны либо уровнем (0), либо фронтом (переход из 1 в 0) сигналов на выводах Р3.2, Р3.3, что определяется программированием битов IT0 и IT1 регистра TCON. При поступлении запроса внешнего прерывания устанавливаются флаги IE0 или IE1. При прерываниях по фронту эти флаги сбрасываются аппаратно при обращении к подпрограмме обслуживания, при прерываниях по уровню флаги очищаются при снятии запроса внешнего прерывания.

 
 


В блоке регистров специальных функций есть два регистра, предназначенных для управления режимом прерываний (IE) и уровнями приоритета (IP). Установка бита ЕА снимает общую блокировку прерываний. При ЕА=1 прерывания могут быть разрешены индивидуальными разрешениями EX0, ET0, EX1, ET1, ES. Установка одного из битов PX0, PT0, PX1, PT1, PS присваивает соответствующему источнику прерываний высший приоритет.

Прерывания от таймеров/счетчиков вызываются при их переполнении установкой флагов TF0 и TF1. Очистка этих флагов происходит автоматически при обращении к подпрограммам обслуживания. Флаги запросов прерываний приемника и передатчика последовательного порта RI и TI устанавливаются аппаратно, но сбрасываться должны программой.

Флаги IE0, IE1, TF0, TF1, RI и TI устанавливаются независимо от того, разрешено или нет соответствующее прерывание в регистре IE. Выполнение подпрограммы обслуживания с низким уровнем приоритета прерывается при поступлении запроса с высшим уровнем приоритета.

Если прерывания разрешены и сформировался соответствующий флаг, система прерываний помещает в стек содержимое счетчика команд РС и загружает в счетчик команд адрес вектора подпрограммы обслуживания. По адресу вектора обычно располагается команда безусловной передачи управления к начальному адресу подпрограммы обслуживания прерывания. Подпрограмма обслуживания должна в случае необходимости начинаться командами записи в стек (PUSH) PSW, ACC, B, DPTR и заканчиваться командами восстановления их из стека (РОР). Подпрограммы обслуживания обязательно заканчиваются командой RETI, снимающей блокировку прерываний. При выполнении подпрограммы обслуживания прерываний действует блокировка запросов прерываний от других источников. Если флаг прерывания был установлен, но не получил обслуживания и к моменту окончания блокировки уже был сброшен, то запрос прерывания теряется и нигде не запоминается.

Отметим, что после системного сброса указатель стека настроен на область первого банка регистров общего назначения. Поэтому, при использовании в программе подпрограмм, в том числе обслуживания прерываний, и банка РОН1 содержимое указателя стека необходимо модифицировать (например, MOV SP,#100).





Дата публикования: 2014-11-04; Прочитано: 447 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...