logo search
ЗФ / Вопросы-Ответы (ВМСиС)

43. Прерывания для работы с клавиатурой.

Клавиатура представляет собой матрицу клавиш, объединенных в единое целое, и электронный блок для преобразования нажатия клавиши в двоичный код. В клавиатурах ЭВМ используются клавиши различных типов, из которых наиболее широкое распространение получили емкостные и контактные.

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

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

Принципы работы клавиатуры

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

Для кодирования символов в ЭВМ используется специальная таблица кодов ASCII (American Standart Code for Information Interchange – американский стандарт кодов для обмена информацией), применяемая на большинстве компьютеров. Таблица кодировки обеспечивает взаимное соответствие изображений символов на экране с их числовыми кодами, и ставит в соответствие каждому символу семиразрядный двоичный код. В ASCII-кодировке представлены 128 символов, которые делятся на две группы:

1. символы пишущей машинки, т.е. прописные и строчные латинские буквы, цифры, и специальные знаки;

2. управляющие символы, используемые для передачи команд в коммуникационных программах.

Семи разрядов ASCII-кода совершенно недостаточно для представления символов языков с алфавитом, отличным от латинского. Поэтому в большинстве стран используются свои собственные версии кодировок, основанные на ASCII.

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

Буфер клавиатуры рассчитан на хранение до 20 кодов нажатых клавиш и логически организован в виде циклического списка-очереди. Код только что нажатой клавиши размещается в конце списка, если он не пуст. Если на момент запроса буфер пуст, то программа переходит в состояния ожидания ввода реального символа. Наличие буфера позволяет нажимать клавиши на клавиатуре с упреждением (заранее), что ускоряет работу на ЭВМ.

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

Кроме нажатия клавиатура отмечает также и отпускание каждой клавиши, посылая процессору свой сигнал прерывания с соответствующим кодом. При нажатии клавиши клавиатура генерирует однобайтный код нажатия, а при отпускании – также однобайтный код отпускания. Код нажатия клавиши совпадает с кодом сканирования. Код отпускания отличается от соответствующего кода нажатия тем, что он больше его на 128.