2.7.6. Контроллер клавиатуры PC/AT 8042.

Программируемый микроконтроллер i8042 применяется в машинах класса AT. Его встроенное программное обеспечение хранится обычно в масочном внутреннем ПЗУ и не допускает изменения, в чем, собственно, и нет необходимости. Эта программа обеспечивает вырабатывания запроса прерывания по приему скан-кода от клавиатуры и отработку управляющих команд от центрального процессора. Кроме управления клавиатурой, через программно-управляемые и программно-читаемые линии внешних портов контроллера формируются сигналы управления вентилем Gate А20, аппаратного системного сброса и считываются сигналы от конфигурационных джамперов системной платы. Контроллер 8242В, кроме интерфейса клавиатуры, поддерживает и аналогичный интерфейс дополнительного устройства, например PS/2-Mouse.

Порт ввода, доступный по команде C0h, используется для чтения состояния джамперов и ключа:

·  Бит 7 - 0=клавиатура заблокирована ключом (KeyLock).

·  Бит 6 - исходный видеорежим: 0=CGA, 1==MDA.

·  Бит 5 - системная перемычка: 0=замкнута.

·  Бит 4 - системное ОЗУ: 0=512 Кбайт и более, 1-256 Кбайт.

·  Бит 1 - вход данных дополнительного интерфейса.

·  Бит 0 - вход данных интерфейса клавиатуры.

Порт вывода, доступный для записи и чтения по командам D1h и D0h соответственно, имеет следующее назначение бит:

·  Бит 7 - последовательные данные клавиатуры.

·  Бит 6 - синхронизация клавиатуры.

·  Бит 5 - запрос прерывания от дополнительного интерфейса (IRQ12).

НЕ нашли? Не то? Что вы ищете?

·  Бит 4 - запрос прерывания от клавиатуры (IRQI).

·  Бит 3 - синхронизация дополнительного интерфейса.

·  Бит 2 - последовательные данные дополнительного интерфейса.

·  Бит 1 - вентиль линии адреса А20 (Gate А20).

·  Бит 0 — альтернативный сброс процессора (без формирования общего сигнала сброса).

Таблица 2.13. Назначение регистров контроллера клавиатуры

Порт, R/W

Назначение

060 RW

Порт данных 8042

064 R

Регистр состояния 8042

Бит 7 - ошибка четности

Бит 6 — тайм-аут приемника/общий тайм-аут*

Бит 5 — тайм-аут передатчика/выходной буфер дополнительного интерфейса полон*

Бит 4 – 1=клавиатура на замке

Бит 3 - 1=команда, 0=данные

Бит 2 - 0=Power ON, 1=Reset OK - состояние завершения системного сброса

Бит 1 - 1=входной буфер полон, 0=готовность к приему команды/данных

Бит 0 – 1=выходной буфер полон

064 W

Регистр команд 8042

* Второе назначение бита относится к контроллеру 8242ВВ, имеющему и дополнительный интерфейс для подключения PS/2-Mouse

Контроллер расположен в пространстве ввода/вывода по адресам 60h и 64h, причем по чтению скан-кода клавиатуры из порта 60h сохраняется совместимость с PC/XT. Назначение регистров контроллера клавиатуры приведено в табл. 2.13. Регистр данных контроллера в режиме записи используется для подачи команд, относящихся к клавиатуре и собственно контроллеру. Признаком готовности контроллера к восприятию команд является нулевое значение бита 1 регистра состояния (порт 064h).

Общие команды контроллера 8042:

·  DFh - разрешить управление линией А20.

·  DDh - запретить управление линией А20.

·  Dih - запись в порт вывода 8042.

·  DOh - чтение порта вывода 8042.

·  COh - чтение порта ввода 8042.

·  AEh - разрешение клавиатуры.

·  ADh - запрещение клавиатуры.

·  ACh - чтение ОЗУ контроллера.

·  ABh - тест синхронизации и данных.

·  AAh - внутренний тест контроллера.

·  60h - запись в контроллер.

·  20h - чтение контроллера.

Команды управления клавиатурой AT:

·  FF - Reset - сброс и тест клавиатуры.

·  FE - Resend - повтор последней передачи.

·  FB-FD - Set Key Types - установка автоповтора отдельных клавиш.

·  F7-FA - Set All Keys - установка операции автоповтора клавиатуры.

·  F6—Set Default - сброс в начальное состояние и разрешение сканирования

·  F5 - Default Disable - сброс в начальное состояние и запрет сканирования.

·  F4 - Enable KB - клавиатура ответит байтом подтверждения АСК и продолжит сканирование.

·  F3 - Set Typematic Rate/Delay - задание задержки и частоты повтора кодов. Последующий байт данных имеет следующий формат-

q  Бит 7=0.

q  Биты [6:5] - задержка, мс: 00-250, 01-500, 10-750, 11-1000.

q  Биты [4:0]-00-IFh - скорость повторов, 1/с:

00h-30,0 08h-15,0 0Ah-12,0 12h-6,0

01h-26,7 09h-13,3 0Ch-10,0 14h-5,0

02h-24,0 05h-18,5 0Dh-9,2 17h=4,0

03h-21,8 06h-17,l 0Fh-8,0 IAh-3,0

04h-20,0 07h-16,0 10h-7,5 IFh-2,0

·  F2 - Read ID Code запрос на 2-байтный идентификатор.

·  ЕЕ - Echo — эхо-диагностика возвращает 0EEh.

·  ED - Set/Reset Mode Indicators - управление индикаторами клавиатуры.

Последующий байт данных:

q  Бит 0: 1=включить Scroll Lock.

q  Бит 1: 1=включить Num Lock

q  Бит 2. 1-включить Caps Lock

·  AD - запрет сканирования

·  AE - разрешение сканирования.

Из регистра данных контроллера кроме скан-кодов возможно получение ответов на команды, префикса кода отпускания клавиши (FO) или кодов особых случаев. Коды особых случаев:

·  FA - АСК - подтверждение приема команды.

·  АА - Test OK - внутренний тест прошел.

·  FD - Diag. Failure - ошибка внутреннего теста.

·  ЕЕ - Echo Response - ответ на эхо-команду.

·  00, FF - Buffer Error - переполнение буфера или неидентифицированная клавиша.