logo
Выч

2.1. Взаимодействие клавиатуры с эвм.

Непосредственное управление работой ЭВМ оператор (пользователь) осуществляет с помощью клавиатуры и манипуляторов. Клавиатура предназначена для введения алфавитно-цифровой информации и управления графическим курсором. Работой клавиатуры управляет специальная электронная схема - контроллер клавиатуры [3,4]. В его функции входит распознавание нажатой клавиши и помещение закрепленного за ней кода в свой выходной регистр (порт), обычно с номером 60h.

Процесс взаимодействия ЭВМ с клавиатурой отображен на рис.2.1. Код клавиши, поступающий в порт, называется скан - кодом. Каждой клавише присвоено два скан-кода: код нажатия и код отпускания, больший на 80h. Кнопки основной части клавиатуры образуют матрицу контактов из 23 строк и 4 столбцов, что сокращает количество необходимых проводников и контактов микросхемы контроллера.

Рис.2.1. Взаимодействие клавиатуры с системой.

Нажатие и отпускание любой клавиши вызывает сигнал аппаратного прерывания, заставляющий процессор прервать выполняемую программу и перейти на программу обработки прерывания (ПОП) от клавиатуры INT09h (вектор прерывания имеет адрес 24h). Обработчик прерывания работает с двумя областями оперативной памяти: кольцевым буфером ввода, располагаемым по адресам от 40h:1Eh до 40h:3Dh, куда помещаются коды ASCII нажатых клавиш, и словом состояния (словом флагов) клавиатуры, находящимся по адресу 40h:17h, где фиксируется состояние управляющих клавиш (<Shift>, <Caps Lock>, <Num Lock>, и другие).

Если скан-код принадлежит одной из управляющих клавиш, и представляет собой код нажатия, то в слове флагов устанавливается в 1 бит (флаг), соответствующий нажатой клавише. Сброс флага происходит при отпускании такой клавиши.

При нажатии любой другой клавиши ее скан-код считывается из порта 60h и по таблице трансляции формируется двухбайтовый код, старший байт которого содержит скан-код, а младший - код ASCII, с учетом состояния слова флагов. Например, буквы Q и q находятся на одной клавише, и соответствующие им коды имеют вид: 1051h и 1071h.

Полученный в результате трансляции двухбайтовый код направляется в кольцевой буфер, который служит для синхронизации процессов ввода данных с клавиатуры и приема их выполняемой компьютером программой. Объем кольцевого буфера составляет 15 слов. Коды символов извлекаются из буфера в том порядке, в каком они в него поступали. Указатель начала содержит адрес первого из не считанных кодов, а указатель конца - адрес первой свободной ячейки буфера, куда будет записаны коды следующей нажатой клавиши. Совпадение содержимого указателей начала и конца соответствует опустошенности кольцевого буфера. При переполнении кольцевого буфера указатели не изменяются и ПОП формирует звуковой сигнал.

Пользовательские программы могут использовать программное прерывание INT 16h, предназначенное для работы с клавиатурой. Функции данного прерывание позволяют:

Прерывание DOS INT 21h тоже имеет несколько функций для обработки сигналов клавиатуры. Эти функции обеспечивают посимволь-ный ввод и обращение к клавиатуре, как к файлу.