Cтраница 3
Затем подается команда СК. АО 1), в которой указывается содержимое старшего байта начального адреса подпрограмм обслуживания прерываний. Если в устройстве используется одна микросхема ПКП ( т.е. Е 1), то процедура инициализации ПКП на этом заканчивается. В противном случае подается команда СКИЗ, которая имеет две модификации: СКИЗа для ведущей и СКИЗб для ведомой микросхемы. Единицы в разрядах Д7 - ДО команды СКИЗа означают, что к соответствующему входу ЗПР ведущей микросхемы подключен вывод ПР ведомой микросхемы. Нули в этих разрядах означают, что на соответствующие входы подаются запросы прерывания от ВУ либо эти входы не используются. В разрядах Д2 - ДО команды СКИЗб указывается идентификатор ведомой микросхемы, равный номеру входа ведущей микросхемы, к которому подключена эта ведомая микросхема. [31]
Каждая часть включает: проверку запроса с анализом ответа по Q, сброс LAM-запроса и увеличение на единицу счетчика переполнений COUNT. Для компактности записи обработка оформлена в виде макроопределения LAM, размещенного перед подпрограммой обслуживания прерываний. [32]
Различают также прерывания одноуровневые и многоуровневые. В многоуровневых системах прерываний подпрограмма обслуживания прерывания более низкого уровня может быть прервана подпрограммой обслуживания прерывания более высокого уровня. Иными словами, реализуется режим прерывания во время прерывания. [33]
Многозадачные операционные системы реального времени и многопользовательские операционные системы обращаются с периферийными устройствами, такими, например, как контроллеры дисковой памяти, практически одинаково. Системы ввода-вывода реального времени обычно используют системные директивы ввода-вывода, а не обращения к подпрограммам обслуживания прерываний. [34]
Микропроцессор ВМ86 имеет достаточно простую и эффективную векторную систему обработки прерывания. Каждому запросу поставлен во взаимно однозначное соответствие его вектор, который служит для определения адреса подпрограммы обслуживания прерывания. В МП используется 256 векторов. Рассмотрим более подробно запросы, поступающие от внешней аппаратуры. [35]
На этом аппаратная часть процедуры обмена по прерыванию заканчивается, и процессор переходит к нормальной работе с измененным значением счетчика команд PC и новым значением слова состояния процессора PSW. Если заранее позаботиться, чтобы в ячейке с адресом вектора прерывания VECT был записан адрес начала подпрограммы обслуживания прерываний, то процессор после окончания аппаратной части перейдет к ее выполнению. Адреса векторов прерывания стандартных устройств приведены в табл. 3.1. Закрепление векторов за нестандартными устройствами производится самим пользователем так же, как и закрепление адресов из последних 4К слов памяти за регистрами данных и регистрами состояния и управления этих устройств. [36]
Использование команды RST n подразумевает резервирование первых 64 ( 8 х 8) байтов памяти под таблицу входов в подпрограммы обслуживания прерываний. Обычно по адресам 8п, п 0 - 7, находятся команды JMP, передающие управление на подпрограммы обслуживания прерываний. Модификация адресной части команд JMP позволяет оперативно изменять входы в подпрограммы. [37]
При появлении несуществующего кода операции или нарушения спецификации в задании адресов операндов микропрограмма фиксирует программное прерывание. РФП-И1, формируется соответствующий код прерывания, который записывается в РОП10, и управление через ВХЗ передается подпрограмме обслуживания прерываний. [38]
При отсутствии БИС ВН59А последняя может быть заменена на ВН59 без изменения принципиальной и монтажной схем. Ввод номера источника запросов выполняется по команде поллинга, а его декодирование - программными средствами, составляющими основу подпрограммы обслуживания прерывания с номером вектора прерывания OFFH. Для этой и других целей мультиплексная шина адреса / данных должна быть подключена через дополнительные резисторы к источнику питания 5 В. [39]
В режиме автоматического окончания прерывания AEOI цикл входа в прерывание завершается по окончании второго импульса INTA, по которому соответствующий разряд РОП сбрасывается в О. В режиме обычного окончания разряд регистра РОП, соответствующий текущему уровню прерывания, остается в 1 до появления команды Конец прерывания EOI, которая ставится в конце подпрограммы обслуживания прерывания. [40]
![]() |
Структурная схема подключения контроллера прерываний к МПВУ. [41] |
С приходом каждого из двух оставшихся сигналов ППР ведомая микросхема, запрограммированный номер которой совпал с кодом, находящимся на шине КАС2 - КАСО, выдает на ШД второй и третий байты команды CALL, содержащие адрес подпрограммы обслуживания прерывания. [42]
Исправление одиночных и обнаружение двукратных ошибок в основной памяти осуществляется с помощью битового корректирующего кода, хранящегося с каждым 32-разрядным словом. Если при чтении данных заново подсчитанный корректирующий код не совпадает с корректирующим кодом, хранившимся в памяти, то одиночная ошибка может быть исправлена, но если ошибки имеют место больше чем в одном разряде информационного слова, вырабатывается сигнал ошибки и обращения к памяти прекращаются до тех пор, пока информация об ошибке не будет обработана подпрограммой обслуживания прерывания, вызываемого этой ошибкой. [43]
Необходимость в использовании стека LIFO может также возникнуть при обслуживании прерывания. Поскольку прерывания считаются случайными событиями, при возникновении прерывания разумно сохранять содержимое всех регистров центрального процессора в стеке. Эту задачу должна выполнять сама подпрограмма обслуживания прерывания. Содержимое регистров должно быть восстановлено непосредственно перед возвратом из прерывания. И в этом случае должно быть сохранено содержимое счетчика команд. [44]
Исполнение программы начинается с временнбго запоминания содержимого АК и состояния разряда переноса. Затем команда запроса прерывания получает адрес устройства, вызвавшего прерывание, и помещает его в АК. Теперь мы должны перейти к подпрограмме обслуживания прерывания для данного устройства. Это делается с помощью косвенного перехода через таблицу, в которой содержатся начальные адреса различных подпрограмм. Код устройства используется как смещение, которое добавляется к первому адресу таблицы. Сумма кода устройства и начального адреса таблицы определяет соответствующий данному устройству адрес входа в таблицу, по которому осуществляется косвенный переход к началу соответствующей подпрограммы. [45]