Порядок выполнения прерываний в микроконтроллерах семейства MCS51

Механизм прерываний разработан для общения вычислительных устройств с внешним миром. Прерыванием называется выполнение определенных команд не в порядке выполнения программы, а по некото­рому событию, называемому запросом на прерывание. Обработка запроса на прерывание откладывается до завершения текущей команды преры­ваемой программы. Затем производится проверка возможности выполне­ния прерывания. Если данный вид прерывания разрешен, то проверяется приоритет запроса на прерывание. Если запрос пришел во время обработ­ки прерывания с более высоким приоритетом, то его исполнение откла­дывается (но не отменяется). Управление приоритетами прерываний и разрешением прерываний производится программно. Команды прерыва­ния не входят в набор команд микроконтроллера, используемых про­граммистом, Логически они являются аналогами команды дальнего перехода к подпрограмме и передают управление на определенный адрес, заданный архитектурой микроконтроллера. Выполнение запроса на прерывание начинается с запоминания в стеке адреса той команды, выполнение которой откладывается для обработки прерывания. Затем управление передается по адресу, соответствующему виду прерывания, В эту ячейку программист должен записать первую команду программы обработки прерывания. Использование прерываний позволяет отделить программирование задач синхронизации и обработки запросов от про­граммирования вычислительных задач.

Микроконтроллеры семейства 18051 работают не менее чем с 5 видами прерываний. Два вида прерывания производятся по внешним сигналам (INT0, INT1), два — по переполнению счетчиков (Т/С0, Т/С1) и один — по завершению приема или передачи байта через последовательный порт. Старшие модели микроконтроллеров имеют больше видов прерываний. Каждому из дополнительных видов прерываний отводится свой началь­ный адрес в ПЗУ, называемый по аналогии с компьютерами вектором прерывания.

Фиксированные адреса ПЗУ, по которым должны располагаться первые команды блоков программы с определенным функциональным назначениемприведены ниже:

0000h /первая команда выполняемая после включения

000Зh /первая команда обработки прерывания по INT0

000Bh /первая команда обработки прерывания по Т/С0

0013h /первая команда обработки прерывания по INT1

001Bh /первая команда обработки прерывания по Т/С1

0023h /первая команда обработки прерывания по посл. порту

Отведенное на эти команды адресное пространство (3 байт для инициали­зации и по 8 байт для обработки прерываний) как правило, используется только для записи команд передачи управления, потому что оно слишком мало для размещения соответствующих блоков программы. Программа обработки прерывания должна заканчиваться командой возврата из прерывания. По этой команде осуществляется возврат к исполнению прерванной программы.

Разрешение на обработку прерываний осуществляется установкой в единицу соответствующих битов регистра разрешения прерывания IE (Interrupt Enable):

IE.7 = ЕА (Enable All) все прерывания

IE.4 = ES (Enable Serial)прерывание по последовательному каналу
IE.3 = ET1 (Enable Timer 1)прерывание по таймеру 1

IE.2 = EX1 (Enable external 1) прерывание по внешнему входу 1
IE.1 = ЕT0 (Enable Timer 0) прерывание по таймеру 0

IE.0 = EX0 (Enable external 0) прерывание по внешнему входу 0

Запись нуля в старший бит этого регистра запрещает обработку всех

прерываний, а единица в этом бите разрешает только проверку разрешений в остальных битах регистра. При прочих равных условиях приоритет имеют прерывания с меньшим номером бита. В случае необходимости можно разделить приоритеты всех сигналов прерывания на две группы при помощи записи единиц и нулей в соответствующие биты регистра приоритетов прерывания IP (Interrupt Priority);

IP.4 = PS (Priority Serial) приоритет последовательного канала
IP.3 = PTl (Priority Timer 1) приоритет таймера 1

IP.2 = PX1 (Priority external 1) приоритет внешнего входа 1
IP.l = PT0 (Priority Timer 0) приоритет таймера 0

IP.0 = PX0 (Priority external 0) приоритет внешнего входа 0

Группа с единицами в битах приоритета проверяется в первую очередь, а группа с нулями проверяется во вторую, причем внутри группы пред­почтение отдается прерыванию с меньшим номером бита. В старших моделях для управления разрешениями прерываний и их приоритетом используются биты в тех же или в дополнительных регистрах.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: