Программирование средств поддержки режима реального времени
В состав аппаратуры МК мМС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 инициализирует систему прерываний с базой таблицы векторов прерываний. При этом все векторы принимают нулевое значение. Пользователь управляет средствами поддержки режима реального времени, используя вышеуказанные процедуры.
В заключение отметим, что введение низкоуровневого слоя ПО, непосредственно управляющего аппаратурой МК, позволило организовать стандартную среду программирования, свободную от аппаратных особенностей ее реализации. Система двунаправленного ВВ обладает достаточной гибкостью для создания различных физических конфигураций по вводу и выводу данных. Система поддержки режима реального времени обеспечивает простой интерфейс по организации и управлению процессами на более высоком уровне.
ГЛАВА 6.
Дата добавления: 2019-02-07; просмотров: 363;