Клавиатура ПК (краткое описание подсистемы)

Страницы работы

4 страницы (Word-файл)

Содержание работы

Клавиатура ПК (краткое описание подсистемы)

На рисунке приведена упрощенная структурная схема взаимодействия узлов клавиатуры и узлов ПК.

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

Программа, содержащаяся в ПЗУ микроконтроллера i8042, выполняет следующие функции:

1)  Сканирует матрицу клавиш, помещая на свой выходной порт последовательно двоичные коды 000…001, 000…010,…., 010…000, 10…00 (они подаются на строки матрицы), и опрашивая после этого каждый раз входной порт (считываются состояния столбцов матрицы. Если нажаты какие-либо клавиши в той строке, на которую в данный момент подана 1 с выходного порта, при считывании входного порта в битах, соответствующих столбцам с нажатыми клавишами считаются 1, а в остальных битах – нули (помните, что это упрощенное описание – опущены детали !).

2)  Формирует по результатам опроса матрицы так называемые скан-коды (фактически это порядковые номера клавиш, изменивших свое состояние по сравнению с предыдущим опросом, снабженные признаком, показывающим вид изменение – нажатие или отпускание). Последовательность скан-кодов хранится в буфере, организованном в ОЗУ микроконтроллера i8042.

3)  Организует «автоповтор» – формирует последовательность одинаковых скан-кодов, если клавиша удерживается нажатой дольше определенного времени.

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

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

6)  Выполняет некоторые дополнительные действия по тестированию клавиатуры.

Контроллер клавиатуры генерирует запрос прерывания (IRQ 1) при каждом нажатии или отпускании клавиши.

 Прерывание IRQ 1 вызывает переход по вектору INT 09H и обрабатывается подпрограммой BIOS. Для передачи в клавиатуру команд и данных, а также для чтения состояния клавиатуры используется порт 64h.

 Port 60H может быть использован для обмена с клавиатурой, эта возможность поддерживается для обеспечения совместимости с предыдущими моделями. Если обмен с портом 64h не удается - попробуйте порт 60h.

Перед посылкой команд BIOS проверяет состояние клавиатуры (IN AL,64H) (не нажата ли клавиша, буфер клавиатуры не переполнен и т.п.) 



mov   al,cmd_code

out   64H,al

     Для команд, требующих посылки двух байтов, таких как

установление скорости автоповтора, между двумя командами out

следует сделать небольшую задержку:

         mov   al, cmd_code

         out   64H, al

         mov   cx, 2000H  ;arbitrary

delay:   loop  delay

         mov   al, data_value

         out   64H, al

Описание команд

---- -----------------------------------------------------------------------

0FFh Сброс клавиатуры и запуск внутреннего теста

0FEh Повторить последнюю передачу

0FDh-0F7H (NOP)

[0FDh - Вызов прерывания IRQ1]

0F6h Привести клавиатуру в исходное состояние и разрешить сканирование

0F5h Привести клавиатуру в исходное состояние и запретить сканирование

0F4h Сбросить буфер клавиатуры и начать сканирование

---- -----------------------------------------------------------------------

0F3h Задать скорость автоповтора и задержку до ее начала

     г7T6T5T4T3T2T1T0¬

     ¦0¦dly¦ reptRate¦

     LT+-+-+-+-+-+-+--

      ¦ LT- L=======¦= bits 0-4 скорость автоповтора (смотри ниже)

      ¦  L============ bits 5-6 установить задержку автоповтора:

      ¦                          00=250ms; 01=500ms; 10=750ms; 11=1000ms

      L=============== bit 7 всегда 0

                                                    Код Сим/сек   Код Сим/сек

     This chart is a partial guide for the repeat    0  = 30.0    0Ah = 10.0

     rate (bits 0-4).  You can interpolate for       1  = 26.7    0Dh =  9.2

     values not shown, but let's face it, you're     2  = 24.0    10h =  7.5

     only interested in the fastest rates.           4  = 20.0    14h =  5.0

                                                     8  = 15.0    1Fh =  2.0

     Клавиатура первоначально установлена на задержкуr 1/2-секунды и

     скорость  10 символов/секунду.См.INT 16H 03H (установка скорости и

задержки

-----------------------------------------------------------------------

0F2h-0EFh (NOP)

0EEh Эхо для целей диагностики. Просто возвращает 0EEh.

---- -----------------------------------------------------------------------

0EDh Управление светодиодами. Второй байт команды имеет формат:

     г7T6T5T4T3T2T1T0¬

     ¦ not used¦c¦n¦s¦

     L-+-+-+-+-+T+T+T-

                ¦ ¦ L= ScrollLock light 01H=turn on

                ¦ L=== NumLock light    02H=turn on

                L===== CapsLock light   04H=turn on

Похожие материалы

Информация о работе