Исследование контроллера клавиатуры-дисплея КР580ВВ79. Организация связи с оператором в обслуживаемых МК – системах, страница 9

2) Режим N-клавишного нажатия (нет блокированных клавиш). В этом режиме нажатие каждой клавиши фиксируется независимо от состояния остальных клавиш. Когда клавиша нажата, пропускаются два цикла опроса клавиатуры, а затем проверяется, осталась ли данная клавиша нажатой. Если да, то ее код заносится в FIFO ввода (формат данных представлен на рис. 15). При одновременном нажатии распознавание клавиш производится в порядке их опроса в цикле сканирования клавиатуры. Опознание всех клавиш ведется независимо. На каждое нажатие код клавиши вводится только один раз. Напомним, что при сканировании клавиатуры возможен специальный режим ошибки (рис. 16).

Формат команды «Чтение ОЗУ ввода/FIFO» приведен на рис. 23. Эта команда должна предшествовать чтению данных из памяти клавиатуры. Если бит AI установлен, то следующие команды чтения данных будут вызывать автоматическое увеличение адреса. Например, если необходимо прочитать всю память клавиатуры, то это можно сделать, загрузив команду «Чтение ОЗУ ввода/FIFO» с установленным битом AI  и затем 8 раз считать данные из ККД.

ЗАДАНИЕ. Введите в память УМПК программу, которая определяет код нажатой клавиши. Факт нажатой клавиши определяется при помощи сигнала прерывания IRQ.

000

05

EN I

;

Разрешение внешнего прерывания

001

04

05

JMP STOP

;

Переход на STOP

003

04

30

JMP PRER

;

Переход на подпрограмму обработки прерывания

005

04

05

STOP: JMP STOP

;

Останов

030

В8

FF

PRER: MOV R0,#0FFH

;

Режим «Команда» (А0=1)

032

9A

FC

ANL P2,#0FCH

;

Адрес ККД

034

23

40

MOV A,#40H

;

Запись команды «Чтение ОЗУ

036

90

MOVX @R0,A

;

ввода/FIFO»

037

C8

DEC R0

;

Режим «Данные» (А0=0)

038

80

MOVX A,@R0

;

Чтение кода клавиши

039

AA

MOV R2, A

;

Запись кода в R2

03А

93

RETR

;

Возврат

Примечание. Перед выполнением программы необходимо убедиться, что переключатель S1.2 замкнут (в верхнем положении).

Выполните программу. В результате выполнения в регистр R2 заносится код нажатой клавиши; код имеет формат, описанный выше (см. рис. 15).

Введите в память УМПК аналогичную программу, которая определяет факт нажатия клавиши при помощи программного опроса слова состояния.

010

В8

FF

MOV R0,#0FFH

;

Режим «Команда» (А0=1)

012

9A

FC

ANL P2,#0FCH

;

Адрес ККД

014

80

M1: MOVX A,@R0

;

Чтение слова состояния

015

53

0F

ANL A, #0FH

;

ОЗУ ввода

017

C6

36

JZ M1

;

не содержит информации?

019

23

40

MOV A,#40H

;

Запись команды «Чтение ОЗУ

01B

90

MOVX @R0,A

;

ввода/FIFO»

01C

C8

DEC R0

;

Режим «Данные» (А0=0)

01D

80

MOVX A,@R0

;

Чтение кода клавиши

01E

AA

MOV R2, A

;

Запись кода в R2

01F

04

1F

STOP: JMP STOP

;

Останов