Методические указания по лабораторным работам по курсу «Аппаратные средства компьютерных систем», страница 35

Контроллер клавиатуры подключается к системе через шину периферийных устройств посредством двух программно-доступных буферов: входного и выходного. Выходной буфер представляет собой 8-разрядный регистр, который доступен системе только как читаемый порт с адресом 60h. Контролер использует выходной буфер для передачи системе кодов сканирования, полученных от клавиатуры, и байтов данных, прочитанных по команде системы. Выходной буфер должен быть прочитан только после того, как установлен признак “Буфер полон” (разряд 0 регистра состояния).

Входной буфер представляет собой 8-разрядный регистр, который доступен системе только как записываемый порт с адресом 60h (порт данных) или 64h (порт команды). Данные, записанные по адресу 60h, отсылаются клавиатуре, если они не являются командой для контроллера. Записывать во входной буфер можно только после того, как сброшен признак “Буфер полон” (разряд 1 регистра состояния).

Регистр состояния представляет собой 8-разрядный регистр, который доступен системе только как читаемый порт с адресом 64h и может быть прочитан в любое время. Он содержит информацию о состоянии контроллера клавиатуры и об интерфейсе. Назначение разрядов регистра состояния приведено в табл. 5.2. Разряд 2 устанавливается в соответствии с заданным значением разряда системного флажка байта команды контроллера (программа POST по завершению сбрасывает его в 0). Комбинации разрядов 7, 6 и 5 позволяют определить причину ошибки.

Таблица 5.2 — Назначение разрядов регистра состояния

Бит

Назначение

0

Выходной буфер полон (0 – в буфере нет новых данных; 1 – в буфере имеются данные (порт ввода 60h))

1

Входной буфер полон (0 – входной буфер пуст (порт вывода 60h или 64h); 1 – в буфере имеются данные)

2

Системный флажок (0 – сброс по включению питания (холодный пуск); 1 – программный сброс (горячий пуск)).

3

Команда/данные (0 – в буфере данные; 1 – в буфере команда)

4

Ключ блокировки (0 – клавиатура заблокирована; 1 – замок открыт)

5

Тайм-аут передачи (1 – передача данных, начатая контроллером, не завершена)

6

Тайм-аут приема (1 – передача была начата клавиатурой, но не закончилась в запрограммированный промежуток времени (2мс))

7

Ошибка паритета (1 – ошибка)