Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 2 Контроллер клавиатур...doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
202 Кб
Скачать
☆
    1. Клавиатура ibm pc

Клавиатура IBMPC включает в себя несколько компонентов: матрицу быстродействующих кнопочных контактов из 23 строк по 4 колонки. 8- разрядный микропроцессор с встроенным ПЗУ, логику управления, параллельный порт и специальный буфер клавиатуры. Клавиатура подсоединена к системному блоку пятью проводниками (линиями). Название и назначение этих линий приведены ниже.

KEYBOARD CLOCK- линия синхросигналов системного таймера;

KEYBOARD DATE - линия для обмена данными с системой в последовательном формате;

RESET - сброс регистров контроллера клавиатуры;

GND - общая линия (заземление);

+SV - питание контроллера.

Клавиши подсоединены к матрице специальными микровыключателями. При нажатии на клавишу замыкается контакт на пересечении строки X и столбца Y матрицы. Каждые 3-5 мс микропроцессор клавиатуры сканирует матрицу, проверяя, какая линия имеет низкий уровень. Координаты X и У линий с низким уровнем по существу являются кодом нажатой клавиши. Этот код называется скан-кодом. Перед тем, как передать скан- код в системный блок, микропроцессор клавиатуры выдает на линию DATE логическую единицу в течении 0,2 мс, затем 8-битовую последовательность скан-кода, начиная с младшего бита, каждый бит через 0,1 мс.

Клавиатура, как периферийное устройство, имеет наивысший приоритет обслуживания, поэтому всякий раз, когда нажимается клавиша в системе вызывается аппаратное прерывание, которое передает управление обработчику прерываний I NT 09Н. Центральный процессор прекращает работу, вызывает драйвер клавиатуры и анализирует полученный скан- код.

Если нажата символьная клавиша, то драйвер клавиатуры преобразует скан-код в код ASCII и записывает его в буфер клавиатуры с начальным адресом 0040:001Е. Если код поступает от клавишей-переключателей, то инициализируется код состояния клавиатуры, записываемый в два байта по адресу 0040:0017 и 0040:0018.Прерывание клавиатуры проверяет всякий раз содержимое этих байтов перед тем, как присвоить код введенному символу.

В таблице 3 описаны названия клавишей-переключателей и назначения битов статуса клавиатуры.

Адрес

Бит

Клавиша

Значение при b=1

0040:0017

7

6

5

4

3

2

1

0

INSERT

CAPSLOCK

NUMLOCK

SCROLL LOCK

ALT

CTRL

Левый SHIFT

Правый SHIFT

Режим включен

_”_

_”_

_”_

Клавиша нажата

_”_

_”_

_”_

0040:0018

7

6

5

4

3

2,1,0

1NSERT CAPSLOCK

NUMLOCK

SCROLL LOCK CTRL NUMLOCK

не используется

Клавиша нажата

_”_

_”_

_”_

Режим включен

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

1) функциональные клавиши;

2) комбинации клавиш.

Коды этих клавиш соответствуют скан-кодам. Коды можно прочитать в старшем байте аккумулятора (АН), если воспользоваться прерыванием INT 16H с функцией ООН.Ниже приведен фрагмент программы чтении кода.

MODELTIHY

CODE

ORB 100H

START: MOV АК, ООН

INT 16Н

MOV AH, 4CH

INT 21H

END START

В таблице 4 приведены коды часто используемых функциональных клавиш и комбинаций клавиш.

Таблица 4

Клавиши

Код

Н

Клавиши

Код

Н

Клавиши

Код

Н

Клавиши

Код

Н

F1

3B

Shift-F1

54

Ctrl-F1

5E

Alt-F1

68

F2

3C

Shift-F2

55

Ctrl-F2

5F

Alt-F2

69

F3

3D

Shift-F3

56

Ctrl-F3

60

Alt-FЗ

6A

F4

3E

Shift-F4

57

Ctrl-F4

61

Alt-F4

6B

F5

3F

Shift~F5

58

Ctrl-F5

62

Alt-F5

6C

F6

40

Shlft-F6

59

Ctrl-F6

63

Alt-F6

6D

F7

41

Shift-F7

5A

Ctrl-F7

64

Alt-F7

6E

F8

42

Shift-FS

5B

Ctrl-F8

65

Alt-F8

6F

F9

43

Shift-F9

5C

Ctrl-F9

66

Alt-F9

70

F10

44

Stuft-F10

5D

Ctrl-F10

67

Alt-F10

71

Ввести с клавиатуры символ в выполняемую в данный момент программу можно несколькими способами:

1) путем нажатия соответствующей клавиши пишущей машинки, либо клавиши на малой цифровой клавиатуре, когда она установлена в режим ввода;

2) путем нажатия комбинации CTRL-КЛ, соответствующей символу, где КЛ - клавиша пишущей машинки;

3) путем нажатия клавиш ALT/ код ASCII в десятичной системе на малой клавиатуре и последующего отпускания клавиши ALT.

Наиболее универсальный третий способ. Он обеспечивает ввод любого символа. Код символа записывается в буфер клавиатуры. Прочитать его можно различными способами, включая средства DOS и BIOS.

Для работы с клавиатурой используются и другие средства, например, функции DOS типа дескрипторов, символьно-ориентированные функции DOS, функции драйвера клавиатуры BIOS, физический уровень.

Указанные средства обеспечивают различную степень гибкости, переносимости и аппаратной независимости.

Основным средством МS-DOS ввода с клавиатуры о помощью дескрипторов является прерывания INT 21Н с функции 3FH (чтение устройства). В качестве параметров этой функции используется дескриптор, сегмент, относительный адрес буфера и его длина. Используя это средство можно оминимальными программными затратами записывать массивы данных, а также переправлять ввод-вывод с другого устройства или файла.

Для клавиатуры система MS-DOS предоставляет программе определенные дескрипторы: 0- стандартный ввод, 1- стандартный вывод, 2- стандартная ошибка.

Ниже приведен фрагмент программы формирования массива, используя дескриптор "О" стандартного ввода.

MODEL TINY

CODE

ORG 100H '

START: JMP QD

BUFF DB 80 DUP(?) ; буферввода

GO: MOV AH, 3FH ; функциячтенияустройства

MOV AL, O ; количество прочитанных символов

MOV BX, O ; дескриптор стандартного ввода

MOV CX, 80 ; количество вводимых символов

MOV DX,OFFSET BUFF ; адрес буфера в DX

INT 21H

MOVАН,4СН

INT21H

ENDSTART

Если функция выполнена успешно, то в AL записываетсяколичество прочитанных символов и сбрасывается флаг переноса. В противном случае устанавливается флаг переноса, а в AL записывается код ошибки.

Символьно ориентированные функции MS-DOS осуществляются через прерывание INT 21H с функциями 01, 06, 07, 08, ОАН, ОВН, ОСН. В лабораторной работе эти функции не используются.

К аппаратно зависимым методам работы с клавиатурой относятся метод с обращением к драйверу клавиатуры ПЗУ BIOS по прерывания INT16H и по аппаратному прерыванию INT09H.Последний метод предполагает написание нового обработчика прерываний INT09H и прямое обслуживание прерываний контроллера клавиатуры. При этом необходимо самому программисту перевести скан-коды в коды ASCII при работе с буфером клавиатуры.Рассмотрим подробнее функции ПЗУ BIOS.