Доступ к клавиатуре через порты ввода-вывода является самым низкоуровневым методом доступа. С помощью порта 61h можно определить, доступен ли контроллер клавиатуры, и разрешить (запретить) доступ к нему. Причем, если значение, возвращаемое из порта 61h, содержит в седьмом разряде нуль, то контроллер клавиатуры не доступен. Пример работы с портом 61h (фрагмент из обработчика прерывания INT 09h):
in al,61h ;прочитать состояние PPI
mov ah,al ;сохранить состояние
or al,80h ;разрешить работу с клавиатурой
out 61h,al
xchg ah,al ;восстановить статус
out 61h,al
С помощью порта 64h можно читать данные с клавиатуры (коды клавиш и статус), программировать и осуществлять настройку клавиатуры.
Порт 60h предназначен для чтения данных с клавиатуры и сохранен для совместимости с клавиатурой PC XT. Рекомендуется использовать порт 60h для чтения скан-кодов, а 64h — для определения статуса и программирования клавиатуры. Такое разделение функций обеспечит максимальную гибкость программ. Пример чтения кода сканирования с помощью порта 60h:
in al,60h ;прочитать скан-код
mov bl,al ;в BL – скан-код
in al,61h ;см. выше
mov ah,al
or al,80h
out 61h,al
xchg ah,al
out 61h,al
mov al,20h ; послать сигнал конца прерывания
out 20h,al ; в контроллер прерываний
Таблица 5.4 — Разряды портов контроллера клавиатуры
Порт |
Бит |
Назначение |
1 (вх.) |
0 |
Резерв изготовителя (0 – перемычка установлена, 1 – перемычка не установлена) |
1-3 |
Зарезервированы изготовителем |
|
4 |
Объем RAM на системной плате |
|
5 |
Зарезервирован изготовителем |
|
6 |
Тип монитора (0 – цветной, 1 – монохромный) |
|
7 |
Замок клавиатуры (0 – клавиатура заблокирована, 1 – разблокирована) |
|
2 (вых.) |
0 |
Системный сброс |
1 |
Линия Gate A20 |
|
2-3 |
Зарезервированы изготовителем |
|
4 |
Выходной буфер полон |
|
5 |
Входной буфер пуст |
|
6 |
Синхросигнал клавиатуры (выход) |
|
7 |
Данные клавиатуры (выход) |
|
TEST |
Т0 |
Синхросигнал клавиатуры (вход) |
Т1 |
Данные клавиатуры (вход) |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.