Скачиваний:
116
Добавлен:
21.02.2014
Размер:
4.86 Mб
Скачать

3.5 Организация прерываний в мп к1810вм86

Микропроцессорная БИС име­ет простую и изменяющуюся систему прерываний. Прерыва­ния могут быть вызваны внеш­ними устройствами, выполнени­ем соответствующих команд, а также инициированы самой МП БИС (внутренние преры­вания). Существует 256 раз­личных типов прерываний.

Для подачи прерываний в МП БИС имеются два входа:

INTR – Interrupt Reguest и NMI – Non Masking Inter­rupt (рисунок 20).

Рисунок 20 – Возможные способы формирования прерываний в

МП К1810ВМ6

Вход INT обычно используется для под­ключения программируемого блока приоритетных преры­ваний (БПП). По функциональному назначению микро­схема БПП аналогична схеме КР580ИК59 и является дальнейшей ее модификацией. Режимы работы БПП могут быть заданы программно. Основные задачи БПП – полу­чение запросов прерывания от различных внешних уст­ройств, определение сигнала с высшим приоритетом, формирование запроса прерывания на входе МП БИС и сообщение номера текущего обслуживаемого внешнего устройства. Прерывания по входу INT могут быть маски­рованы путем записи «0» или «1» в разряд 1 флагового регистра МП БИС.

Микропроцессорная БИС реагирует на поступление запроса прерывания по входу INTR последовательным выполнением двух машинных циклов обслуживания пре­рывания: первый указывает БПП, что запрос прерывания был воспринят, и начинает обслуживаться; на втором БПП выдает на МД байт данных, указывающий тип пре­рывания (0–255). При работе МП БИС с максималь­ной конфигурацией системы на интервале двух циклов INTA на выходе LOCK формируется сигнал, запрещаю­щий другим процессорам системы пользоваться магистра­лями.

Внешние устройства могут подавать запросы прерыва­ния на второй

вход NMI МП БИС. На этом входе запрос воспринимается и записывается в МП БИС по фронту поступающего импульса, не может быть маскирован и имеет высший приоритет по отношению к запросам, по­ступающим на вход INTR. Обычно вход NMI используют для указания МП БИС о каких-либо сбоях в системе (сбоях в источнике питания, ошибках в памяти). При определении наличия сигнала на входе NMl МП БИС нет необходимости получать код для инициализации про­цесса обслуживания прерывания и соответственно она не формирует два машинных цикла INTA в ответ на запрос по входу NMI.

Внутренние прерывания формируются за счет выполне­ния МП БИС команды прерывания (тип команды зависит от источника прерывания).

При установке флага переполнения О=1 в результате выполнения какой-либо команды программы формируется команда прерывания – INTO (прерывание по перепол­нению).

Микропроцессорная БИС формирует прерывание сразу же после выполнения команд DIV или IDIV, если частное от деления больше, чем разрядность используемых ре­гистров.

При установке флага Т=1 МП БИС автоматически формирует прерывание, которое воздействует сразу после выполнения любой текущей команды. Этот тип прерывания называют одношаговым или первым типом, и он является мощным средством при отладке программ. При выполне­нии одношагового типа прерывания МП БИС производит обычную последовательность операций, а именно записы­вает в стек флаги МП БИС, содержимое регистров CS и IP. В дополнение к этому очищаются флаги I и Т. В ре­гистры CS и IP записываются соответственно из адресов 00006, 00007 и 00004, 00005 новые значения базового адреса сегмента и смещения для передачи управ­ления на соответствующую подпрограмму обслуживания прерывания. В качестве такой подпрограммы может быть использована подпрограмма выдачи результата выполнения программы на печать, дисплей и т. д. По окончании выполнения подпрограммы после получения команды IRET (возврат из подпрограммы) из стека извлекаются и записываются в МП БИС флаги и содержимое регистров IP и СР. Из приведенных пояснений ясно, что при выполне­нии одношагового типа прерывания МП БИС обслуживает прерывания обычным способом. Однако обеспечение вы­вода результатов выполнения отдельных блоков в про­грамме или даже отдельных команд с целью их последую­щего анализа путем задания в нужном месте программ режима одношаговых преры­ваний является удобным сред­ством при исследовании ра­боты программ.

Типы внутренних пре­рываний имеют ряд общих свойств:

1) код прерывания сообщается МП БИС перед командой или включен в команду прерывания;

2) на выходе МП БИС не форми­руются сигналы INTA;

3) за исключением одношагового типа, внутренние прерывания не могут быть программно отключены;

4) за исключе­нием одношагового типа, лю­бой из внутренних прерыва­ний имеет более высокий приоритет по отношению к внеш­ним прерываниям.

Любой из 256 возможных типов прерывания характери­зуется вектором прерывания. Векторы прерывания зани­мают 1К байт адресного пространства. На рисунке 21 показа­но распределение начал векторов прерывания по адресам памяти. Как видно из рисунка, каждый вектор занимает четыре ячейки памяти, при этом два младших адреса в векторе используются для записи смещения в сегменте, а два старших — для записи базового адреса сегмента.

Рисунок 21 – Распределение векторов прерываний в памяти микроЭВМ

Формирование адреса передачи управления на соответ­ствующую подпрограмму обслуживания прерывания в BIU происходит так же, как и при обращении к любой ячейке памяти, а именно: содержимое двух младших адре­сов вектора прерывания записывается в регистр IP, coдержимое старших двух адресов записывается в регистр CS. После этого содержимое CS смещается на четыре раз­ряда влево и откладывается с содержимым IP. Полученное 20-разрядное число определяет адрес начала подпрограм­мы прерывания.

В данной микропроцессорной системе используется контроллер прерываний К1810ВН59А. Структурная схема изображена на рисунке 22.

Рисунок 22 – Структурная схема контроллера прерываний К1810ВН59А

Включение контроллера прерываний в систему показано на рисунке 23.

Рисунок 23 – Включение контроллера прерываний в МПС

Контроллер принимает запросы от внешних устройств, определяет, какой из незамаскированных запросов имеет наивысший приоритет, сравнивает его с приоритетом текущей программы и при соответствующих условиях выдает запрос прерывания INT для МП. После подтверждения запроса МП должен получить от котроллера информацию, которая укажет на подпрограмму, соответствующую данному ВУ.