Таблица 1: Описание прерываний процессора ВМ85
Имя | Приоритет | Стартовый адрес | Вид сигнала |
TRAP | 1 | 24CH | Переход из 0 в 1, затем в 1 |
RST 7.5 | 2 | 3CH | Переход из 0 в 1 |
RST 7.5 | 3 | 34CH | 1 |
RST 7.5 | 4 | 2CH | 1 |
INTR | 5 | Вводится при подтверждении прерывания | 1 |
Из таблицы видно, что стартовые адреса подпрограмм обслуживания прерываний находятся в области точек входа по команде RSTn, n=0-7, но расположены посередине между ними. Это разъясняет ряд наименований , принятых для запросов RSTn.5, n=5-7.
Все запросы, за исключением TRAP, могут быть запрещены или разрешены одновременно с помощью команд EI, DI, управляющих общим флагом разрешения прерываний IEN. Существует также возможность раздельного маскирования запросов типа RST независимо др. от друга, которое выполняется с помощью команды SIM. По команде SIMобеспечивается установка нового состояния маски в соответствии с содержимым аккумулятора. При выполнении этой команды содержимое аккумулятора интерпретируется следующим образом.
А7 | А6 | А5 | А4 | А3 | А2 | А1 | А0 |
SOD | SDEN | -- | R 7.5 | MSEN | M 7.5 | M 6.5 | M 5.5 |
M 7.5, M 6.5, M 5.5 – маски соответствующего прерывания
MSEN – разрешение установки маски прерываний
R 7.5 – бит, сбрасывающий триггер, где фиксируются запрос внешнего прерывания по входу RST 7.5
SDEN – Разрешение вывода данных, которые находятся в разряде A7
SOD – данные предназначенные для вывода через линию SOD
Установленная маска запрещает соответствующее прерывание. Смена маски в соответствии с А0-А2 выполняется только при разрешении её установки: MSEN=1. В противном случае функция установки маски подавляется.
Текущее состояние масок прерываний может быть прочитано по команде RIM.
При включении источника питания или пуске МП все индивидуальные маски устанавливаются, а флаг разрешения прерывания IEN сбрасывается, что приводит к запрету прерываний. Приём какого – либо запроса на прерывание тоже вызывает общее запрещение всех маскируемых прерываний, но при сохранении состояния индивидуальных масок. Кроме этого запрос TRAP сохраняет и состояние флага общего разрешения, которое может быть прочитано только после первой команды RIM. Вторая команда даёт результат текущего состояния маски, показывающего общий запрет прерываний.
В нашем случае маскирование с помощью режимного слова имеет вид:
Установка маски осуществляется по команде SIM. При этом режимное слово находится в аккумуляторе.
Настройка портов ввода-вывода
В качестве порта ввода и порта вывода в данной конфигурации используются соответственно порты А и В микросхемы РУ55. Порты А и В одинаковы, и каждый из них содержит 8-битовый регистр для буферного запоминания пересылаемого байта данных. Все разряды портов А и В используются для ввода и вывода параллельно, т.е. невозможна установка направления передачи для каждого разряда.
В зависимости от содержания РУС каждый порт (А и В) может работать в двух режимах: простого ввода – вывода ( без обмена управляющими сигналами) или ввода – вывода с квитированием сообщения ( с обменом управляющими сигналами). В режиме 0-го программируемого параллельного интерфейса (ППИ) порт С может осуществлять ввод- вывод параллельно по шести линиям.
Режим с квитированием сообщений соответствует режиму 1 ППИ. В этом случае линии порта С разбиваются на две группы , одна из которых обеспечивает обмен управляющими сигналами для порта А, а другая для порта В.Варианты использования линий порта С и соответственно организация работы всех портов представлены в следующей таблице:
Линии порта С | Варианты использования линии | |
ALT 3 | ALT4 | |
РС 0 | INTR A | INTR A |
РС1 | BF A | BF A |
РС2 | STB A | STB A |
РС3 | Порт вывода | INTR B |
РС4 | То же | BF B |
РС5 | >> | STB B |
Примечание: Вариант ALT1 соответствует использованию всех линий порта С в качестве портов ввода, а вариант ALT2 – в качестве портов вывода.
где INTRA/INTRB (InterruptRequest)- запрос прерывания по порту A/B;
BFA/BFB (BufferFull) – буфер порта А/В полон/заняты
STAA/STAB (Strobe)- строб записи, соответствующий порту А/В
Временные диаграммы , поясняющие обмен управляющими сигналами при работе портов А и В в режиме с квитированием сообщений, представлены на рисунке:
Временная диаграмма работы порта А(В) со стробированием в режиме ввода
По переднему фронту импульса на линии STBA, который формируется таймером, формируется сигнал BF (PC1) "буфер полон" который используется в качестве сигнала квитирования. По заднему фронту импульса STBA формируется сигнал INTR (PC0) который является сигналом прерывания.
С приходом сигнала запроса прерывания RST 7,5 процессор переходит в режим обслуживания прерываний. Соответственно программе обслуживания прерываний 7,5 производится считывание данных из порта ввода А.Затем процессор начинает обрабатывать данные в соответствии с заданным алгоритмом. По окончанию вычислений процессор выдаёт данные в порт В. И процесс повторяется вновь.
Сигналы BF и INTR остаются активными до выполнения микропроцессором команды INPORT, по которой содержимое буферного регистра порта А вводится МП по сигналу RD. С началом импульса RD сбрасывается сигнал INTR , а с его окончанием – сигнал BF. Таким образом , сигнал BF =1 сохраняется в течении всего времени обращения к буферному регистру и хранению данных в нём. Сигнал INTR=1 сохраняется, пока записанный в регистр байт данных ожидает ввода в МП.
Если в МПС используется система прерываний, то выход INTR соединяется с соответствующим входом прерывания. Если она не используется, то МП может получить информацию о наличии сигнала прерывания и о состоянии других управляющих сигналов путём чтения слова состояния из РСС и анализа его содержимого.
Таким образом, использование управляющих сигналов при вводе или выводе данных позволяет не терять байты из-за того, что МП не ввёл вовремя байт из порта или же вывел очередной байт в порт до того, как внешнее устройство считало предыдущий байт.
Режим работы портов, а также управление таймером состоит в том, что в регистр управляющего слова записывается байт формат которого имеет следующий вид:
Биты D0, D1 управляющего слова задают направление передачи данных через порты А и В;
Биты D2,D3 определяют вариант использования порта С;
Биты D4,D5 разрешают или запрещают выработку сигналов прерывания INTR;
Биты D6,D7 содержат код TM2,TM1 команды управления таймером.
В нашем случае этот байт будет равен: