Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум.docx
Скачиваний:
0
Добавлен:
26.06.2025
Размер:
2.36 Mб
Скачать

Лабораторная работа №6 «Программирование и режим работы программируемого параллельного интерфейса. Управление клавиатурой и дисплеем с помощью программируемого параллельного интерфейса кр580вв55»

Цель и задачи работы

Цель: изучить структуру программируемого параллельного интерфейса, знать и уметь программировать режимы его работы с помощью загрузки управляющего слова в регистр управляющего слова (РУС). Ознакомиться и изучить способы управления программируемым параллельным интерфейсом КР580, изучить команды ввода-вывода.

Задачи: научиться программировать программируемый параллельный интерфейс для управления работой клавиатуры и дисплея.

Порядок выполнения работы

1. Ознакомиться с методическим указанием.

2. Изучить структуру программируемого параллельного интерфейса (БИС КР580ВВ55).

2. Изучить схему подключения клавиатуры и дисплея к программируемому параллельному интерфейсу.

3. Прочитать и проанализировать пример программы для программирования ППИ.

4. Подготовить УМК к работе.

5. Изучить и выполнить индивидуальное задание.

6. Разработать отчет по лабораторной работе.

7. Подготовить ответы на контрольные вопросы.

Теоретическая часть

Программируемый параллельный интерфейс (ППИ) КР580ВВ55 с точки зрения программиста представляет собой три 8-разрядных порта: порт РА, порт РВ, порт РС. Порт РС дополнительно разделен на два 4- разрядных порта.

Существует три режима работы микросхемы. В режиме 0 три упомянутых канала могут быть независимо друг от друга запрограммированы на ввод или вывод информации. Режим 1 позволяет передавать информацию по каналам A (РА) и B (РВ), используя отдельные биты канала C (РС) для управления обменом данными. В режиме 2 канал A приобретает свойство двунаправленной шины, управляемой опять же отдельными битами канала C. Кроме того, возможны установка и сброс отдельных битов канала C.

Основные особенности микросхемы КР580ВВ55:

  • 3 канала ввода/вывода, 8 бит каждый;

  • 3 режима работы (1 – статический ввод/вывод, 2 – тактируемый ввод/вывод, 3 – двунаправленный ввод/вывод);

  • раздельное программирование каждого канала на ввод или вывод.

Структурная схема ППИ представлена на рис. 51.

ППИ структурно разбит на две группы (A и B). Группа A включает в себя порт A и старшую тетраду порта C. Группа B состоит из порта B и младшей тетрады порта C. Доступ к портам ввода/вывода и регистру управления осуществляется с помощью логики чтения-записи в соответствии с табл. 59.

Таблица 59

Доступ к портам ввода/вывода и регистру управляющего слова

Сигналы управления

Направление передачи

А1

А0

/RD

/WR

/CS

0

0

0

1

0

Шина данных ← Порт А

0

1

0

1

0

Шина данных ← Порт В

1

0

0

1

0

Шина данных ← Порт С

1

1

0

1

0

Данные не определены

0

0

1

0

0

Порт А ← Шина данных

0

1

1

0

0

Порт В ← Шина данных

1

0

1

0

0

Порт С ← Шина данных

1

1

1

0

0

РУС ← Шина данных

×

×

×

×

1

Шина данных в высокоомном состоянии

Назначение этих и остальных выводов микросхемы приведено в табл.60.

Таблица 60

Назначение выводов ППИ КР580ВВ55

Выводы

Назначение

D7…D0

Двунаправленная шина данных. Предназначена для передачи и приема данных процессором, а также передачи управляющих команд и слова состояния

/CS

Chip Select. Выбор микросхемы. Низкий уровень инициирует обмен между процессором и ППИ

/RD

Read. Чтение. Низкий уровень на этом входе позволяет ППИ передать данные или слово состояния процессору

/WR

Write. Запись. Низкий уровень на этом входе позволяет ППИ принять данные или управляющую команду

RESET

Reset. Сброс. Высокий уровень на этом входе сбрасывает все внутренние регистры, включая регистр управления, переключает все порты (A, B, C) в режим 0, одновременно переводя их в режим ввода (только при /RD = 0 и /WR = 0)

99

Продолжение таблицы 60

Выводы

Назначение

А1, А0

Адресные входы. Выбор канала. Позволяют выбрать один из портов (A, B, C) или регистры управляющего слова и состояния (в зависимости от сигналов на входах /RD и /WR, см. табл. 59)

РА7…РА0

Порт А

РВ7…РВ0

Порт В

РС7…РС0

Порт С

Режим работы и направление передачи для каждого порта ввода/вывода задается с помощью записи управляющего слова в регистр управляющего слова в соответствии с рис. 52. Отметим возможность комбинирования режимов работы для разных портов. Например, порт B может быть запрограммирован на вывод в режиме 0 для управления различными выключателями и реле, в то время как порт A может быть запрограммирован в режим 1 для ввода с клавиатуры. Кроме того, отметим, что считать информацию из регистра управляющего слова нельзя.

При выполнении данных лабораторных работ ППИ настроен для работы в нулевом режиме.

Каждый из восьми битов порта C может быть независимо от других установлен или сброшен с помощью специальной команды вывода, посылаемой в регистр управляющего слова. Это свойство порта C облегчает программирование в случае, когда биты порта C используются для управления передачей данных по каналам A или B. Формат команды приведен на рис. 53.

Определенные разряды порта С могут быть использованы разработчиком системы в качестве триггера запроса на прерывание INT или триггера разре­шения на прерывание INTE. Программный доступ к ним дает возмож­ность разрешать или запрещать обслуживание запросов на прерыва­ние, поступающих от внешних устройств.

Описание режимов работы ППИ КР580ВВ55.

Режим 0 (простой ввод/вывод).

Работа в этом режиме позволяет организовать простой ввод или вывод для каждого из трех портов. Данные просто записываются или считываются из выбранного порта. Таким образом, основные особенности функционирования микросхемы в режиме 0 следующие:

  • два 8-битовых канала (порты A и B) и два 4-битовых канала (старшая и младшая тетрады порта C);

  • каждый порт может быть независимо от других запрограммирован на ввод или вывод; таким образом, всего может быть 16 различных комбинаций ввода/вывода;

  • выходы имеют память, входы работают без буферной памяти.

101

102

Режим 1 (тактируемый ввод/вывод).

Этот режим служит для однонаправленного обмена данными по выбранному каналу с периферийным устройством. Для управления передачей или приемом по порту A используется младшая тетрада порта C, порт B управляется старшей тетрадой порта C.

Основные особенности работы в данном режиме:

  • два канала (порты A и B);

  • каждый порт может быть запрограммирован на ввод или вывод;

  • одна тетрада порта C используется для управления одним портом передачи данных.

Описание сигналов для управления операцией ввода

/STB (STROBE)

По низкому уровню на этом входе входные данные записываются в буферную память.

/IBF (INPUT BUFFER FULL)

Высокий уровень на этом выходе показывает, что данные загружены в буферную память. Задний фронт сигнала /STB устанавливает этот выход в уровень лог. 1, передний фронт сигнала на входе /RD сбрасывает его в лог. 0.

INT (INTERRUPT)

Высокий уровень на этом выходе может быть использован для прерывания выполнения основной программы процессора, чтобы обслужить устройство ввода. Сигнал INT устанавливается в лог. 1 по переднему фронту сигнала /STB (если установлен сигнал INTE разрешения прерывания) и сбрасывается по заднему фронту сигнала на входе /RD микросхемы. Этот процесс обеспечивает ввод данных в микропроцессор со стороны устройства ввода простым стробированием своих данных.

INTE A

Разрешение прерывания для порта A. Управляется установкой/сбросом бита 4 порта С.

INTE B

Разрешение прерывания для порта B. Управляется установкой/сбросом бита 2 порта С.

Взаимодействие описанных сигналов показано на рис. 54.

Описание сигналов для управления операцией вывода

/OBF (OUTPUT BUFFER FULL)

Сигнал высокого уровня на этом выходе показывает устройству вывода, что микропроцессор записал данные в канал. Сигнал устанавливается в лог. 1 по переднему фронту на входе /WR микросхемы и сбрасывается по заднему фронту сигнала /ACK.

/ACK (ACKNOWLEDGEMENT)

Низкий уровень на этом выходе показывает микропроцессору, что периферийное устройство приняло данные.

INT (INTERRUPT)

Рисунок 54 – Временные диаграммы работы портов при вводе информации в режиме 1

Высокий уровень на этом выходе может быть использован для прерывания выполнения основной программы процессора в момент принятия данных периферийным устройством. Сигнал INT устанавливается в лог. 1 по переднему фронту сигнала /ACK (если одновременно сигналы /OBF и INTE установлены в лог. 1) и сбрасывается по заднему фронту сигнала на входе /WR микросхемы.

INTE A

Разрешение прерывания для порта A. Управляется установкой/сбросом бита 6 порта С.

INTE B

Разрешение прерывания для порта B. Управляется установкой/сбросом бита 2 порта С.

Взаимодействие описанных сигналов показано на рис. 55.

Режим 2 (двунаправленный тактируемый ввод/вывод).

В этом режиме возможен обмен данными по 8-битовой двунаправленной шине данных. Управление обменом данными, а также направление передачи задается с помощью управляющих сигналов аналогичным режиму 1 способом. Возможно также генерирование сигналов прерываний и запрета разрешения.

Основные особенности работы в данном режиме:

  • возможно использование только порта A;

  • управление обменом обеспечивается 5 битами порта C;

  • входы и выходы обладают буферной памятью.

Описание управляющих сигналов для двунаправленного ввода/вывода

INT (INTERRUPT)

Высокий уровень на этом выходе может быть использован для прерывания выполнения основной программы процессора.

Рисунок 55 – Временные диаграммы работы портов при выводе информации в режиме 1

Режим вывода

/OBF (OUTPUT BUFFER FULL)

Сигнал высокого уровня на этом выходе показывает устройству вывода, что микропроцессор записал данные в порт A.

/ACK (ACKNOWLEDGEMENT)

Низкий уровень на этом выходе выводит выходной буфер порта A из третьего состояния для вывода данных в периферийное устройство. В остальных случаях выходной буфер остается в третьем состоянии.

INTE 1 (INTE плюс /OBF)

Разрешение прерывания для порта A при работе на вывод. Управляется установкой/сбросом бита 6 порта С.

Режим ввода

/STB (STROBE)

Низкий уровень на этом входе загружает данные из периферийного устройства в буферную память порта A.

/IBF (INPUT BUFFER FULL)

Высокий уровень на этом выходе показывает, что данные загружены в буферную память.

INTE 2 (INTE плюс /IBF)

Разрешение прерывания для порта A при работе на вывод. Управляется установкой/сбросом бита 4 порта С.

Работа ППИ в режиме 2 показана на рис. 56.

Назначение линий порта С при разных режимах работы ППИ КР580ВВ55 представлено в табл. 61. Свободные от управляющих сигналов линии порта С (в табл. 61 обозначены I/O) могут быть использованы как линии ввода или вывода данных. Управляющие сигналы, передаваемые по линиям порта С, фиксируются в соответствующих разрядах порта С (табл.

Рисунок 56 – Временные диаграммы работы порта А в режиме 2

61). Байт, считанный микропроцессором из порта С, отражает текущее состояние ППИ и может быть затем программно проанализирован. Одновременно могут быть считаны и данные, вводимые или выводимые по свободным линиям порта С.

Таблица 61

Управляющие сигналы для различных режимов работы ППИ КР580ВВ55

Разряды порта С

Режим ППИ

РС7

РС6

РС5

РС4

РС3

РС2

РС1

РС0

Порт А

Порт В

Режим 1

Ввод

I/O

I/O

/IBF

/STB

INT

/STB

/IBF

INT

Порт А

Порт В

Режим 1

Вывод

/OBF

/ACK

I/O

I/O

INT

/ACK

/OBF

INT

Порт А

Режим 2

/OBF

/ACK

/IBF

/STB

INT

I/O

I/O

I/O

При программировании работы необходимо иметь в виду, что ППИ занимает в адресном пространстве четыре адреса. При подключении по схеме, представленной на рис. 57, ППИ занимает следующие адреса:

  • адрес регистра управляющего слова (РУС) – 03h;

  • адрес порта РА – 00h;

  • адрес порта РВ – 01h;

  • адрес порта РС – 02h.

Рисунок 57 – Схема подключения ППИ к системным магистралям микропроцессора

Эти адреса задаются установкой перемычки (провод А) между дешифратором адреса К555ИД7 и ППИ (рис. 57). Если в системе задействовано несколько микросхем портов, то дополнительный дешифратор, подключенный к адресным линиям А2…А7, определяет активную в текущий момент микросхему интерфейса. Напомним, что КР580ВМ80А способен адресовать до 256 портов ввода/вывода.

Пример программы приема и выдачи данных ППИ:

MVI A,83h

Создание управляющего слова. Установка порта РА и старшего разряда порта РС на вывод информации. Порт РВ и младшие разряды порта РС на ввод информации.

OUT 03h

Загрузка управляющего слова в РУС.

IN 01h

Загрузка в аккумулятор данных из порта РВ.

OUT 00h

Передача данных из аккумулятора в порт РА.

Программируемый параллельный интерфейс КР580ВВ55 (ППИ) в составе учебного микропроцессорного комплекта (УМК) обеспечивает связь микропроцессора с клавиатурой и дисплеем УМК. В составе УМК клавиатура и дисплей по отношению к процессору являются внешними устройствами (рис. 58).

Дисплей УМК в штатном режиме предназначен для выдачи информации о работе микропроцессора (обслуживания программы «МОНИТОР»), а при написании специальных программ на экране дисплея можно сформировать разнообразную символьную информацию.

Клавиатура УМК в штатном режиме предназначена для обслуживания программы «МОНИТОР», а при написании специальных программ ее можно использовать для ввода в микропроцессор дискретной информации.

При программировании работы необходимо иметь ввиду, что ППИ, обслуживающий клавиатуру и дисплей УМК, занимает в адресном пространстве четыре адреса:

  • адрес регистра управляющего слова (РУС) – FBh;

  • адрес порта РА – F8h;

  • адрес порта РВ – F9h;

  • адрес порта РС – FAh.

Дисплей УМК.

Дисплей УМК состоит из шести восьмисегментных индикаторов, каждый сегмент которых представляет светодиод, который излучает свет при подаче на него уровня логической единицы. Каждый сегмент индикатора имеет свое обозначение a, b, c, d, e, f, g, h.

С целью уменьшения количества выводов дисплея в УМК реализован принцип динамической индикации. При этом одноименные сегменты всех шести индикаторов объединены и имеют один общий управляющий вход. Общие управляющие входы (a, b, c, d, e, f, g, h) подключены к соответствующим разрядам (0, 1, 2, 3, 4, 5, 6, 7) порта РВ (рис. 58).

Каждый индикатор имеет еще один (разрешающий) вход, предназначенный для разрешения свечения сегментов именно в этом индикаторе. Разрешающие входы индикаторов подсоединены к соответствующим выходам порта РА (0, 1, 2, 3, 4, 5).

109

Таким образом, для того, чтобы высветить требуемый символ в требуемом разряде дисплея на выходах порта РВ, необходимо сформировать цифровой код требуемого символа, а на выходах порта РА сформировать двоичный код разрешающий свечение требуемого символа в одном или нескольких разрядах дисплея.

Если необходимо высветить различные символы в разных разрядах дисплея, необходимо поочередно разрешать свечение в требуемых разрядах индикатора, синхронно с этим, на управляющие входы a, b, c, d, e, f, g, h подавать цифровые коды соответствующих символов. Если эту процедуру выполнять с достаточно большой частотой, то можно наблюдать одновременное свечение различных символов в разных разрядах дисплея.

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

Клавиатура УМК.

Клавиатура учебного микропроцессорного комплекта является источником дискретной информации и позволяет получать электрические сигналы в виде логического нуля или единицы при замыкании или размыкании электрических контактов клавиш.

Клавиатура состоит из 24 клавиш (директивные и информационные), подключенных по матричной схеме (матричная клавиатура) состоящей из 4 строк и 6 столбцов. Строки клавиатуры с одной стороны (рис. 58) через резисторы R подсоединены к источнику питания +5 В, а с другой к соответствующим (2, 4, 5, 6) входам порта PC.

Столбцы клавиатуры через инверторы DD подсоединены к соответствующим (0, 1, 2, 3, 4, 5) выходам порта РА.

Для определения (идентификации) состояния любой клавиши (нажата, не нажата) необходимо иметь (разработать) специальную программу, обеспечивающую опрос и идентификацию состояния требуемой клавиши.

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

Пример программы для программирования ППИ приведен в табл. 62.

Таблица 62

Программа для программирования ППИ КР580ВВ55 в составе УМК

Метка

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

Комментарий

MVI A,89h

Настройка ППИ. Формирование и подача управляющего слова 89 по адресу FВ.

OUT FBh

ОПРОС КЛАВИШИ «П»

L1

MVI A,01h

Подача 0 на левый столбец клавиатуры (формируется 1, но за счет инвертирования подается 0).

OUT F8h

IN FAh

Прием состояния порта PC в аккумулятор.

ANI 10h

Маска на верхнюю строку.

JNZ L1

Переход если (А)≠0.

CALL LAIT

Иначе переход на подпрограмму зажигания символа «П».

JMP L1

Переход на начало опроса клавиши «П».

RST 7

Останов.

ПОДПРОГРАММА ЗАЖИГАНИЯ СИМВОЛА «П»

LAIT

MVI A,08h

Единица на разрешение зажигания в четвертом слева разряде дисплея.

OUT F8h

MVI A,37h

Код символа «П».

OUT F9h

Высвечивание символа «П».

SUB A

Очистка аккумулятора.

OUT F9h

Гашение индикатора.

RET

Возврат из подпрограммы.

Изменение состояния клавиш приводит к так называемому «дребезгу» контактов (рис. 59). Время дребезга составляет tдр = 1–50 мс. Существуют аппаратные и программные способы защиты от дребезга. На рис. 60 приведен пример аппаратной защиты от дребезга для перекидного ключа. RS-триггер, реализованный на элементах И-НЕ, позволяет в течение времени установки t >tдр защитить выходы от дребезга.

В программном способе защиты используется временная задержка t >tдр, организуемая при опросе состояния ключа (рис. 61).

Для реализации простейших временных задержек в систему команд МП входит команда NOP, которая «ничего не делает», но выполняется за 4 такта. При тактовой частоте 2 МГц команда выполняется за 2 мкс.

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

Рисунок 59 – Временная диаграмма переключения ключей

Рисунок 60 – Пример аппаратной защиты от дребезга

Так продолжается до тех пор, пока содержимое рабочего регистра не станет равным нулю, что интерпретируется программой как момент выхода из цикла. Время задержки при этом определяется числом, загруженным в рабочий регистр, и временем выполнения команд, образующих программный цикл.

Рассмотрим подпрограмму, которая обеспечивает временную задержку на 150 мкс (табл. 63). Подпрограмма в теле цикла содержит одну команду NОР. Время выполнения программы определяется числом, загруженным в регистр А. Это число 0F.

Подсчитаем время выполнения программы (табл. 63).

Команда MVI А,0F выполняется за 7 тактов. Затем NOP – 4 такта, DCR А – 5 тактов, JNZ M1 – 10 тактов. Эти три команды выполняются 15 (0F) раз, т.е. (4+5+10)×15 = 285 тактов. Команда RET – 10 тактов. Итого 299 тактов, что при частоте 2 МГц составляет 150 мкс.

Рисунок 61 – Алгоритм программной защиты от дребезга

Максимально возможная задержка, осуществляемая программой 2 составит 2429,5 мкс.

Таблица 63

Подпрограмма временной задержки

Метка

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

Комментарий

DEL 1

MVI A,0Fh

Загрузка счетчика циклов в регистр А

M1

NOP

DCR A

(A) ← (A) – 1

JNZ M1

Переход если (А)≠0.

RET

Возврат из подпрограммы.

Для реализации задержки большей длительности можно рекомендовать увеличить тело цикла включением дополнительных команд или использовать метод вложенных циклов.

Порядок построения подпрограмм рассмотрим на примере подпрограммы временной задержки на 200 мс (табл. 64). Она состоит из двух циклов. Счетчик внутреннего вложенного цикла – в регистре Е. Первоначально в регистр Е загружается число 00, но первая же команда DCR E изменяет состояние регистра на FF. Программа выполняется за 200 мс и состоит из двух циклов по регистрам Е и D.

Таблица 64

Подпрограмма временной задержки

Метка

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

Комментарий

DEL 2

MVI D,68h

Загрузка счетчика циклов в регистр D

M2

MVI E,00h

Загрузка счетчика циклов в регистр E

M1

DCR E

(E) ← (E) – 1

JNZ M1

Переход если (E)≠0.

DCR D

(D) ← (D) – 1

JNZ M2

Переход если (D)≠0.

RET

Возврат из подпрограммы.

При программировании технологических режимов широкое применение находит следующая подпрограмма (табл. 65).

Таблица 65

Подпрограмма временной задержки

Метка

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

Комментарий

DEL 3

LXI D,data16

Загрузка счетчика циклов в регистровую пару DE (значение от 0000h до FFFFh)

M1

DCX D

(DE) ← (DE) – 1

MOV A,D

(A) ← (D)

ORA E

(логическое сравнение старшего и младшего байтов регистровой пары DE).

JNZ M1

Переход если (D) ≠ (E)

RET

Возврат из подпрограммы.

Время на выполнение подпрограммы (табл. 65) определяется числом тактов.

Число тактов: ΣT = 10+C×(5+5+4+10)+10 = 20+С×24, где C = data.

При частоте f = 2 МГц и data= 000116 имеем минимальную для данной программы задержку времени tзад = ΣT/f = 0,000022 с.

При data= FFFF16, ΣT = 20+65535×24 = 1572860, tзад = 0,78643 с.

Временная задержка длительностью 1 с. Из рассмотренных примеров видно, что секунда является очень большим интервалом времени по сравнению с частотой тактирования МП. Такие задержки сложно реализовать методом вложенных циклов, поэтому их обычно набирают из точно настроенных задержек меньшей длительности. Например, задержку в 1 с можно реализовать десятикратным вызовом подпрограммы, реализующей задержку 100 мс.