В состав аппаратуры МК мМС1204 входит ряд стандартных средств поддержки режима реального времени. Среди них два системных таймера (таймер системного времени и таймер временных интервалов), реализованные на базе ПИТ КР580ВИ53 и 8-уровневая система прерываний, в основе которой лежит ПКП КР580ВН59. Третий таймер ПИТ резервируется в качестве генератора скорости передачи ПСА1 и ПСА2.
Аппаратная логика мМС1204 предусматривает строгую специализацию всех счетчиков ПИТ и их резервирование исключительно для общесистемных целей. Благодаря этому удается определить простой драйвер системного таймера, содержащий четыре стандартные подпрограммы:
; Установка скорости приема-передачи ПСА1 и ПСА2
VEL: PUSH
PSW
MVI
A, 0B6H
;Код команды ПИТ
OUT
PIT + 3
MOV
A, C
;Передача параметра:
OUT
PIT + 2
;младший байт
MOV
A, B
;и старший байт
OUT
PIT + 2
;фактора скорости
POP
PSW
RET
; Установка периода следования системных меток
CLK: PUSH
PSW
MVI
A, 34H
;Код команды ПИТ
OUT
PIT + 3
MOV
A, C
;Передача параметра:
OUT
PIT
;младший байт
MOV
A, B
;и старший байт
OUT
PIT
;периода системных меток
POP
PSW
RET
; Запуск счетчика паузы
DELAY: PUSH
PSW
MOV
A, C
;Передача параметра:
OUT
PIT + 1
;младший байт
MOV
A, B
;и старший байт
OUT
PIT + 1
;длительности паузы
POP
PSW
RET
; Процедура сброса счетчика паузы
DLINI: PUSH
PSW
MVI
A, 70H
;Код команды ПИТ
OUT
PIT + 3
POP
PSW
RET
Драйвер поддерживает следующие процедуры: VEL—установку скорости передачи по каналам связи, CLK—установку частоты следования системных меток времени, DELAY—запуск счетчика задержки и DLINI—инициализацию счетчика задержки. Процедура DLINI подготавливает счетчик СТ1 ПИТ для работы в режиме 0 (прерывание по окончанию счета) и устанавливает на его выходе 0 (отсутствие запроса на прерывание IR2). Процедура DELAY загружает счетчик задержки СТ1 параметром, после чего он начинает счет. По окончанию счета генерируется запрос на прерывание IR2 по второму уровню. Более детально работа счетчика была рассмотрена в § 3.7.
Программируемый контроллер прерываний КР580ВН59 обеспечивает различные режимы работы системы прерываний. Важно определить ее стандартный способ функционирования, для поддержки которого может быть использован ряд специальных системных подпрограмм нижнего уровня. В качестве последнего удобно выбрать широко используемый режим строгого вложения приоритетов. Находясь в рамках данного режима, можно написать драйвер ПКП, включающий четыре стандартные подпрограммы:
; Инициализация ПКП
ICINI: DI
;3апрет прерываний
PUSH
PSW
MVI
A, 0E0H
ANA
С
ORI
16H
;Адресный интервал—4,
OUT
PIC
;режим работы—автономный
MOV
A, B
OUT
PIC + 1
MVI
A, 0FFH
;Установка маски
OUT
PIC + 1
POP
PSW
EI
;Pазрешение прерываний
RET
; Конец прерывания
EOI: PUSH
PSW
MVI
A, 20H
;ЕOI
OUT
PIC
POP
PSW
RET
; Чтение маски прерываний
MIN: IN
PIC + 1
RET
; Запись маски прерываний
MOUT: OUT
PIC + 1
RET
Процедура ICINI инициализирует ПКП для работы в данном режиме. В качестве входного параметра через регистровую пару ВС процедуре ICINI передается базовый адрес ITAB таблицы векторов, которая имеет вид
ITAB:
IL0:
JMP
DB
ADDR0
;База таблицы
;Пользователь IR0
IL1:
JMP
ADDR1
;Системное время
DB
IL2:
JMP
ADDR2
;Система отсчета пауз
DB
IL3:
JMP
ADDR3
;Приемник ППА
DB
IL4:
JMP
ADDR4
;Приемник ПСА2
DB
IL5:
JMP
ADDR5
;Приемник ПСА1
DB
IL6:
JMP
ADDR6
;Пользователь IR6
DB
IL7:
JMP
ADDR7
;Пользователь IR7
Здесь ADDRN, N = 0—7, служит указателем точки входа в подпрограмму обслуживания прерывания соответствующего уровня. Следует помнить, что таблица должна располагаться по 32-байтовой границе. Инициализация включает команду разрешения прерывания EI при полностью установленных масках ПКП (прерывания по всем уровням запрещены). Для управления маской служит специальная пара процедур MIN и MOUT.
При каждом включении напряжения питания или нажатии клавиши сброса ПО мМС1204 инициализирует систему прерываний с базой таблицы векторов прерываний. При этом все векторы принимают нулевое значение. Пользователь управляет средствами поддержки режима реального времени, используя вышеуказанные процедуры.
В заключение отметим, что введение низкоуровневого слоя ПО, непосредственно управляющего аппаратурой МК, позволило организовать стандартную среду программирования, свободную от аппаратных особенностей ее реализации. Система двунаправленного ВВ обладает достаточной гибкостью для создания различных физических конфигураций по вводу и выводу данных. Система поддержки режима реального времени обеспечивает простой интерфейс по организации и управлению процессами на более высоком уровне.