logo
Материалы по интерфейсам периферий / Для Скрипко / Для пособия ПУ (Восстановлен) (2)

Интерфейс клавиатуры

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

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

Клавиатура в PC-совместимой системе представляет собой небольшой компьютер. Связь с системным блоком осуществляется через последовательный канал, данные по которому передаются по 11 бит, причем восемь из них собственно данные, а остальные — синхронизирующие и управляющие. Хотя это полноценный последовательный канал связи (данные передаются по одному проводнику), он не совместим со стандартным последовательным портом RS-232, который часто используется для подключения модемов.

В клавиатурах первых PC использовался микроконтроллер 8048, а в более новых компьютерах применяется микросхема 8049 со встроенной памятью ROM или другие микросхемы, совместимые с 8048 или 8049. Например, в расширенной клавиатуре фирмы IBM всегда использовался специализированный вариант процессора 6805 фирмы Motorola, совместимый с микросхемами Intel. Встроенный процессор клавиатуры сканирует матрицу переключателей, устраняет эффект дребезжания, вырабатывает при нажатии клавиши соответствующий скан-код и передает его на системную плату. Этот процессор имеет свою память, иногда небольшую память ROM и встроенный последовательный интерфейс.

В компьютере PC/XT последовательный интерфейс клавиатуры соединен с микросхемой 8255 программируемого периферийного интерфейса ( Programmable Peripheral Interface — PPI) на системной плате. Эта микросхема, в свою очередь, подключена к контроллеру прерываний через линию IRQ 1, которая используется для сигнализации о том, что данные с клавиатуры доступны. Сами данные из микросхемы 8255 передаются в процессор через порт ввода-вывода с адресом 60 h. Сигнал на линии IRQ 1 заставляет процессор компьютера перейти к подпрограмме обработки прерываний (INT 9 h), которая интерпретирует скан-коды клавиатуры и определяет дальнейшие действия.

В компьютерах типа AT последовательный интерфейс клавиатуры подключен к специальному контроллеру клавиатуры на системной плате. В качестве такого контроллера используется микросхема 8042 универсального интерфейса периферийных устройств (Universal Peripheral Interface — UPI). Этот микроконтроллер фактически является еще одним процессором со встроенными ROM емкостью 2 Кбайт и RAM на 128 байт. Существует версия с микроконтроллером 8742, в котором используется микросхема EPROM; такой микроконтроллер позволяет стирать информацию и записывать ее заново. В комплекты ROM для модернизации старых системных плат входили и новые микросхемы контроллеров клавиатуры, поскольку в них есть свои микросхемы ROM, которые тоже должны быть модифицированы. В некоторых компьютерах можно использовать микросхемы 8041 и 8741, которые отличаются только емкостью встроенной памяти.

В системах AT микроконтроллер, установленный в клавиатуре (типа 8048), пересылает данные в контроллер клавиатуры (типа 8042) на системной плате; возможна также передача

данных в обратном направлении. Когда контроллер на системной плате принимает данные от клавиатуры, он выдает запрос по цепи IRQ 1 и передает данные главному процессору через порт ввода-вывода с адресом 60 h (как и в PC/XT). Играя роль посредника между клавиатурой и главным процессором, контроллер клавиатуры типа 8042 может также преобразовывать скан-коды и выполнять другие функции. Данные могут передаваться контроллеру 8042 через тот же порт 60 h, после чего он пересылает их в клавиатуру. Кроме того, при необходимости передать команды или проверить состояние контроллера клавиатуры на системной плате может быть использован порт ввода-вывода с адресом 64 h. Передача команд обычно сопровождается пересылкой данных в одном из направлений через порт 60h.

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