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

5.2.12 Определение веса нажатой клавиши

Клавише в соответствие ставится двоичное число (ее вес), яв­ляющийся функцией номера строки Ci и номера столбца Ki, на пере­сечении которых находится клавиша. Контроллер вычисляет вес кла­виши в соответствии с выражением W=nXC+K (n - количество столбцов матрицы клавиатуры). Вычисления требуется выполнять по методу двух счетчиков, в Т1 накапливается двоичный эквивалент но­мера строки, а в Т2 - двоичный эквивалент номера столбца матрицы БСА частной процедуры идентификации нажатой клавиши по методу двух счетчиков представлена на рисунке 64.

Текст программы:

KEYW:

MOV

А,С

; загрузка в аккумулятор кода

; строк матрицы

MVI

Н,Н00Н

; обнуление счетчика

KEYW1:

STC

; установка признака CY=1

RAR

сдвиг

JNC

KEYW2

; если обнаружена нажатая клави ша,

; то переход к KEYW2

JNR

Н

; инкремент счетчика

KEYW2:

JMP

KEYW1

CPI

OFFH

; анализ кода строк

JNZ

KEYW4

; если нажать несколько клавиш,

идти к KEYW4

MOV

А,В

; загрузка в аккумулятор СВ

MVI

L,00H

; обнуление счетчика Т2

KEYW3:

STC

; установка признака CY=1

RAR

; сдвиг СВ

; если обнаружен активный столбец,

JNC

KEYW5

; сдвиг закончить

INR

L

; инкремент счетчика Т2

KEYW4:

JMP

KEYW3

MVI

А, 10Н

; записать в аккумулятор коды

; «нескольких клавиш

JMP

KEYW6

KEYW5:

XRA

А

; обнуление аккумулятора и призна ков

MOV

А,Н

; загрузка в А содержимого Т1

RAL

RAL

ADD

L

; (А) <- 4ХТ1+Т2

KEYW6:

STA

KWGHT

; запоминание веса клавиши в ячейке

; KWGHT

RETUR:

; выход из процедуры ввода символа с

клавиатуры

Рисунок 63 - Схема алгоритма частной процедуры ожидания освобождения клавиши

Рисунок 64 – Схема алгоритма частной процедуры определения веса нажатой клавиши

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

Клавиши вычисляются в со­ответствии с приведенным анали­тическим выражением и записыва­ются в ячейку памяти KWGHT.

Если цифры, вводящиеся с клавиатуры, ПК должен уметь распознавать, сколько клавиш од­новременно нажаты. Эту процедуру удобно совмещать с частной проце­дурой вычисления веса нажатой клавиши.

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

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