Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пнх.doc
Скачиваний:
26
Добавлен:
23.03.2015
Размер:
6 Мб
Скачать
☆

7.2. Программный ввод–вывод данных.

Существ два метода орг-ции ввода-вывода данных:

1. Программный ввод-вывод данных.

2. Ввод-вывод данных с использованием системы прерывания.

Программный ввод-вывод:

Алгоритм работы:

1. Опрос порта 02Н до приема сигнала «готовность=0»

2. Ввод данных из порта 01Н

3. Выдача в порт 03Н сигнала «сброс=0» до приема сигнала «готовность≠0»

4. Вызов спец подпрограммы обработки данных

Блок – схема алгоритма:

Программа обслуживания

РОВ: MVI B, NNh

Установка счетчика в один из байтов

M1: IN Port 02

Ввод данных в аккумулятор из порта 02 разряда D0

ANI 01h

Логич умножение содержимого аккумулятора на двоичное число A←(A)∙01h

JNZ M1

Переход на М1, если Z=0

IN Port 01

Ввод данных в аккумулятор из Port 01

MOV C,A

C←(A)

M2: MVI A, 00h

А←00р

OUT Port 03

Port 01←(H)

IN Port 02

Ввод в аккумул А из Port 02 разряда D0

ANI 01h

Проявление флага Z: A←(A) ∙01h

JZ M2

Если Z=1 → M2

CALL OBS

…..

Вызов подпрограммы приема данных

DCR B

В←(В)-1

JNZ M1

Если В ≠ 0 → М1

HLT

Остановка

OBS

7.3.Ввод-вывод данных по прерыванию.

Ввод-вывод данных с использованием системы преобразования.

Принципы управления МПС в режиме прерывания .

Код команды управления по прерыванию (RSTi)

NNN – код периферич. устр-ва, кот дало запрос прерывания.

Алгоритм (осн. операции):

1. Периферийные устр-ва формируют запрос прерывания, а контроллер сигнал INT для МП.

2. МП формирует сигнал и дальше попад. на контроллер прерыв-я, а он потом черезD5D4D3 на ШД, после чего они в виде RSTi попад. в МП.

3. По команде RSTi в стек переписыв содержимое программного счетчика, а прогр счетчик записывает: По RSTi стек ←(РС), РС ← 0000 0000 00NN N000

4. После выхода из подпрограммы в прогр счетчик мы помещ адрес из стековой памяти.

РС ← адрес из стека.

Организация вв/выв данных по прерыванию

а) код RST1 = 11101111В = EFH

Адрес начала обработки подпрогр = 0000 0000 0010 1000В = 0028H

Машинные коды

Мнемокоды

Комментарии

Область памяти для таблицы перехода

Адрес

Данные

0028

С3

Р1: JMP M1

Безусловный переход к адресу подпрогр обработки (например 0В00Н)

0029

00

002А

0В

…..

Область ЗУ подпрограмм обслуживания

0В00Н

F3

DI

Запрет прерывания

…

…

PUSH PSW

Стек ← (РС); (F),(A)

IN 01

A←(Port 01)

STA 0F10

<0F10>←(A)

POP PSW

PC,F,A←(из стека)

EI

Отмена запрета прерывания

RET

Возврат в основную (прерванную) программу

б) вывод RST2 = 11110111В = F7H

Адрес начала обработки подпрогр = 0000 0000 0011 0000В = 0030Н

Машинные коды

Мнемокоды

Комментарии

Адрес

Данные

0030

С3

JMP M2

Переход к началу подпрограммы оюслуживания вывода (адрес 0С00Н)

…

00

…

С0

…

…

DI

Запрет прерывания

PUSH PSW

Стек ← (РС); (F),(A)

LDA 8000H

A←(<8000>)

OUT 02

Port 02←(A)

POP PSW

PC,F,A←(стек)

EI

Отмена запрета прирывания

RET

Возврат в прерванную программу.