Поэтому в большинстве МП прерывание может осуществляться после выполнения очередной команды. Состояние программы в этом случае характеризуется содержимым счетчика команд (адрес следующей команды), а так же содержимым РОН и регистра флагов. Процедура перехода к прерывающей программе и последующего возврата из нее может быть полностью идентична действиям, выполняемым по командам ВЫЗОВ и ВОЗВРАТ. Состояние программного счетчика (а иногда и регистра флагов или PSW) аппаратно фиксируется в стеке, а значение РОНов - при необходимости программно в самом тексте прерывающей программы. Учитывая, что большинство команд МП являются короткими, время реакции МПС на запрос прерывания при анализе запросов по завершению текущего командного цикла не бывает большим.
Программируемый контроллер прерываний
Программируемый контроллер прерываний К580ВН59 позволяет организовать более гибкую и эффективную подсистему прерываний в МПС.
Рис. 5.4. Структура контроллера прерываний К580ВН59
Программируемый контроллер прерываний включает в себя блоки связи с системной шиной, управления и запросов. Блок запросов содержит три 8-разрядных регистра - регистр запросов РгЗ, в котором фиксируются запросы от источников прерываний, регистр маски РгМ, определяющий подмножество источников, которым разрешены прерывания и регистр состояний РгС, в котором фиксируются запросы, принятые на обслуживание.
Состав управляющих линий контроллера включает стандартные линии подключения к системной шине : D[7:0], A0, WR\, RD\, CS\; линии, передающие запрос на прерывания процессору и ответ МП INT и INTA\ соответственно.
Линии запросов z7..z0 соединяют контроллер с источниками прерываний. Контроллер может обслуживать до 8 источников прерываний. При большем числе источников возможно каскадное включение ..ВН59, причем один из контроллеров будет ведущим, а остальные (не более 8) - ведомыми. Для назначения роли контроллера в системе предназначен вход SP (H - уровень соответствует ведущему контроллеру). Для организации взаимодействия каскадированных контроллеров прерываний предназначены линии CAS[2:0].
Программирование контроллера осуществляется путем загрузки в специальные регистры двух или трех управляющих слов, форматы которых показаны на Рис. 5.5. Загрузка этих слов осуществляется командами инициализации в начале работы системы.
Команда |
A0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
КИ1 |
0 |
А7 |
А6 |
А5 |
1 |
0 |
F |
S |
0 |
|
КИ2 |
1 |
A15 |
A14 |
A13 |
A12 |
A11 |
A10 |
A9 |
A8 |
|
КИ3-1 |
1 |
z7 |
z6 |
z5 |
z4 |
z3 |
z2 |
z1 |
z0 |
|
КИ3-2 |
1 |
x |
x |
x |
x |
x |
n |
n |
N |
Рис. 5.5. Форматы команд инициализации контроллера ..ВН59
В команде КИ1 разряд S определяет количество контроллеров прерываний в системе : "1" - один контроллер, "0" - более одного (имеет место каскадирование). Разряд F задает шаг между соседними адресами подпрограмм, обслуживающих прерывания : "1" - 4 байта, "0" - 8 байт.
Разряды A7, A6, A5 вместе со всеми разрядами КИ2 образуют старшие 11 бит адреса подпрограммы. При значении F = 1 вектор прерывания (адресная часть команды CALL) формируется следующим образом :
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.