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

Исходная система прерываний в архитектуре MCS-51 включает пять источников — два внешних и три внутренних. Система развивается, с появлением микроконтроллеров типа 8052 число источников прерываний в архитектуре семейства постоянно увеличивается и достигло в микроконтроллерах типа 8XC51GP пятнадцати. Некоторые усовершенствования претерпел механизм приоритетов прерываний. Здесь мы рассмотрим исходную систему прерываний, а все отличия будут указаны при описании старших версий микроконтроллеров.

Из пяти источников прерываний внешними являются входы INT0# и INT1#, а внутренними — два счетчика/таймера и последовательный порт. Активные сигналы на входах INT0#, INT1# устанавливают флаги IE0, IE1 регистра TCON. Таймер 0 и Таймер 1 используют для выработки запросов прерываний флаги переполнения TFO, TF1 в регистре управления TCON, а последовательный порт использует для этого два флага — приемника RI и передатчика TI в регистре управления SCON. Каждый из флагов последовательного порта может вызвать прерывание, а конкретный источник определяет процедура обслуживания посредством опроса.

Реакция на любой запрос, разрешенный к обслуживанию, заключается в передаче управления от текущей программы специальной процедуре обслуживания прерывания данного типа. Осуществляется эта передача посредством команды LCALL, код которой не выбирается из памяти, а формируется внутри микроконтроллера. Адрес перехода в архитектуре MCS-51 соответствует вектору прерывания и фиксирован для каждого источника:

Из таблицы видно, что интервал между адресами составляет всего 8 ячеек памяти программ, поэтому по первым четырем адресам может располагаться либо очень короткая процедура, либо команда JMP перехода на область памяти, где находится более длинная процедура обслуживания. По адресу последовательного порта места больше. Если по адресам векторов прерываний находятся команды JMP, то имеет место так называемая таблица переходов системы прерываний.

Comments are closed.