Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Обработка прерываний




МП К1810ВМ86 имеет гибкую структуру прерываний трех видов: внешние, внутренние и программные.

Внешние запросы прерываний поступают по двум внешним входам INTR и NMI. На вход INTR подаются маскируемые запросы, которые удовлетворяются после выполнения текущей команды, если состояние признака разрешения внешних прерываний I = 1. Признак I может быть программно установлен командой STI или сброшен командой CLI. На вход NMI подается немаскируемый запрос прерывания, который также обрабатывается после завершения текущей команды, но вне зависимости от значения признака I.

К внутренним прерываниям относятся прерывания по переполнению, по ошибке деления и по признаку Т выполнения программы по шагам.

Внутренние прерывания не маскируются признаком I и обрабатываются после выполнения текущей команды.

Программные прерывания вызываются сразу после выполнения специальной команды INT и также не маскируются признаком I.

Все виды прерываний относятся к определенному типу. Всего имеется 256 типов прерываний, которые указаны в табл. 3.5.

Таблица 3.5

Вид прерывания Тип прерывания Приоритет
Прерывание по ошибке деления   Высший
Прерывание по однобайтной команде INT    
Прерывание по переполнению: Признак О = 1 По команде INTO    
Немаскируемое прерывание по входу NMI    
Маскируемое прерывание по входу INTR 5-255  
Пошаговый режим   Низший

 

Прерывания типа 0, 3 и 4 генерируются программно и прямо связаны с выполнением определенной команды.

Все типы прерываний жестко связаны с соответствующей областью памяти (рис. 3.8), в которой хранятся заданные программистом начальные адреса подпрограмм обслуживания прерываний. Для каждого типа прерываний в области памяти, начиная с адреса 00000H, отводится 4 байта для записи двух 16-разрядных слов (вектора прерывания). В старших двух байтах хранится содержимое сегментного регистра CS, а в младших двух байтах - содержимое программного счетчика (смещение) РС. Оба 16-разрядных слова определяют адрес перехода к подпрограмме обслуживания прерывания. При обработке всех видов прерываний содержимое сегментного регистра CS, регистра признаков F и программного счетчика РС засылается в стек. Признаки I и Т сбрасываются. Новое значение содержимого CS и РС берется из ячеек памяти, соответствующих типу прерываний.

Адрес области памяти из диапазона (00000Н-003FEH) находится умножением кода типа прерывания на четыре. Например, если поступил запрос прерывания типа 5, то в МП вводится 8-разрядное двоичное значение 00000101, которое умножается на 4 (сдвигается на 2 разряда) и результат умножения 0000010100 (14Н) определит начальный адрес памяти, где хранится вектор прерывания подпрограммы обслуживания прерывания.

Коды прерывания типов 0-4 формируются в МП автоматически, а коды типов прерывания, начиная с номера 5, необходимо вводить с ШД от контроллера прерываний, в качестве которого может быть использована БИС К1810ВН59А.

На рис. 3.10. приведена структурная схема подключения контроллера прерываний К1810ВН59А к МП, работающему в минимальном режиме.

 

Тип прерывания Адрес памяти

РС 00000Н

0

CS

00004Н

РС

1 Переход к п/п

Вектор CS обслуживания

00008Н

прерывания РС

2

CS

0000СН

------ -------

------ -------

..

РС 003FEH

255

CS

00400H

-------

Подпрограм-

ма обслужи-

вания

прерывания

--------

FFFFFH

 

 

Рис. 3.8. Типы прерывания и их адреса

 

Работа схемы иллюстрируется временной диаграммой, показанной на рис. 3.9. Если от УВВ поступает один из запросов прерываний ЗП0-ЗП7, то контроллер вырабатывает сигнал запроса прерываний INT, который подается на вход INTR микропроцессора. Сигнал на входе INTR необходимо поддерживать до тех пор, пока не будет получено подтверждение прерывания. Заметим, что сигнал INTA вырабатывается только в ответ на маскируемые запросы прерывания. В ответ на сигнал INT МП формирует два сигнала INT в двух машинных циклах, разделенных двумя холостыми тактами. В течение обоих машинных циклов МП вырабатывает сигнал ALE и буферные регистры адреса К580ИР82 будут загружаться неопределенной информацией. Но поскольку сигналы чтения отсутствуют, то информация от всех устройств, подключенных к системной шине, поступать не будет. Контроллер прерываний по первому сигналу INTA не выдает данных, и МП в этот момент информацию по входам АД0 - АД15 не воспринимает. По второму сигналу INTA БИС К1810BH59А формирует байт, значение которого определяет код типа прерывания. Выводы данных Д0-Д7 БИС К1810 должны быть подключены к младшей половине ШД.

 

<можно вставить картинку, но он может ее сам дать>

Рис. 3.9. Временная диаграмма цикла прерывания

 

+ V

MN/MX

INTA

ШУ

RD

WR

DT/R

МП

DEN

ВМ86

ALE STB

INT ША

(А0 - А15)


(AD15- AD0) A B

 
 


SR CLK RDY T Дешифратор

ШД

OE (D0 - D15)

       
   
 


A B

       
   
 
 


Генератор INTA D0-D16 CS WR RD

ПКП

INT Контроллер прерываний

RESET

 


ЗПР0 -----------------ЗПР7

Рис. 3.10. Структурная схема включения ПКП

диаграмма цикла ввода в МП кода типа прерывания похожа на временную диаграмму цикла чтения (см. рис. 3.9). Контроллер прерывания, приняв код типа прерывания, умножает его на 4 и формирует адрес перехода к подпрограмме обслуживания прерывания.

Программирование БИС К1810ВН59А производится обычным способом, который практически не отличается от программирования БИС К580ВН59.

В режиме программирования запись команд инициализации и управления в контроллер осуществляется при значении CS=0 и WR=0. Команда инициализации СКИ1 записывается при значении младшего разряда адреса А0=0, а команда СКИ2 - при А=1. В команде СКИ2 указывается только пять старших разрядов. Три младших разряда заданы и их значение соответствует двоичному коду номера входа ЗП.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...