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

5. Модуль "Вывод сообщения о типе ввода" (InTpMesOut)

Этот модуль предназначен для вывода сообщения об установленном типе ввода на двоичные индикаторы "Тип ввода" ("Адрес"/"Данные") (см. рис. 3.24). Для уменьшения аппаратных затрат эта информация должна выводиться через один порт в упакованном формате, что требует его формирования.

ГСА этого модуля приведена на рис. 3.30.

Рис. 3.30. Алгоритм модуля "Вывод сообщения о типе ввода"

6. Модуль "Ввод с клавиатуры" (KbdInput)

Задачей этого модуля является считывание состояния 16-ричной клавиатуры с формированием ее образа в памяти (см. рис. 3.24).

Считывание информации с клавиатуры сводится к последовательному выбору ее строк и ввода их состояния в память. Эта идея реализована в ГСА модуля KbdInput, приведенной на рис. 3.31.

Рис. 3.31. Алгоритм модуля "Ввод с клавиатуры"

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

7. Модуль "Контроль ввода с клавиатуры" (KbdInContr)

Этот модуль предназначен для анализа информации, считанной с клавиатуры, и формирования флагов, характеризующих ее состояние. При этом интересует факт включения одной, более одной и ни одной кнопки клавиатуры (см. рис. 3.24).

Для ответа на эти вопросы необходимо подсчитать количество активных битов в наборе данных "Образ клавиатуры" и сравнить результат с интересующими числами. Эта идея реализована в ГСА модуля KbdInContr, приведенной на рис. 3.32. Для уменьшения времени контроля строки, не содержащие активных битов, пропускаются без их просмотра.

8. Модуль "Преобразование очередной цифры" (NxtDigTrf)

Этот модуль осуществляет преобразование единично-шестнадцатирич­ного кода очередной введенной цифры из набора KbdImage в двоичный код (см. рис. 3.24).

В общем случае двоичный код цифры, введенной с матричной клавиатуры, образуется из двух полей: двоичного кода номера строки и двоичного кода номера столбца, в пересечении которых находится соответствующий ей активный бит. При этом код строки является старшим полем, а код столбца младшим полем формируемого двоичного кода цифры.

При размерности клавиатуры 4  4 четырехразрядный двоичный код шестнадцатиричной цифры образуется из двух двухразрядных полей номера строки и столбца.

Эта идея реализована в ГСА модуля NxtDigTrf, приведенной на рис. 3.33. В рассматриваемой задаче преобразование кода цифры не должно выполняться при наличии ошибки ввода с клавиатуры, а также при ее неактивном состоянии. Поэтому флаги KbdErr и EmpKbd, информирующие об этих ситуациях, являются управляющими ключами на выполнение модуля.

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

Рис. 3.32. Алгоритм модуля "Контроль ввода с клавиатуры"

Рис. 3.33. Алгоритм модуля "Преобразование очередной цифры"