Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорные средства и системы.doc
Скачиваний:
56
Добавлен:
13.11.2019
Размер:
15.2 Mб
Скачать

5.4. Программирование средств поддержки режима реального времени

В состав аппаратуры МК мМС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

0

;База таблицы

;Пользователь IR0

IL1:

JMP

ADDR1

;Системное время

DB

0

IL2:

JMP

ADDR2

;Система отсчета пауз

DB

0

IL3:

JMP

ADDR3

;Приемник ППА

DB

0

IL4:

JMP

ADDR4

;Приемник ПСА2

DB

0

IL5:

JMP

ADDR5

;Приемник ПСА1

DB

0

IL6:

JMP

ADDR6

;Пользователь IR6

DB

0

IL7:

JMP

ADDR7

;Пользователь IR7

Здесь ADDRN, N = 0—7, служит указателем точки входа в подпрограмму обслуживания прерывания соответствующего уровня. Следует помнить, что таблица должна располагаться по 32-байтовой границе. Инициализация включает команду разрешения прерывания EI при полностью установленных масках ПКП (прерывания по всем уровням запрещены). Для управления маской служит специальная пара процедур MIN и MOUT.

При каждом включении напряжения питания или нажатии клавиши сброса ПО мМС1204 инициализирует систему прерываний с базой таблицы векторов прерываний. При этом все векторы принимают нулевое значение. Пользователь управляет средствами поддержки режима реального времени, используя вышеуказанные процедуры.

В заключение отметим, что введение низкоуровневого слоя ПО, непосредственно управляющего аппаратурой МК, позволило организовать стандартную среду программирования, свободную от аппаратных особенностей ее реализации. Система двунаправленного ВВ обладает достаточной гибкостью для создания различных физических конфигураций по вводу и выводу данных. Система поддержки режима реального времени обеспечивает простой интерфейс по организации и управлению процессами на более высоком уровне.