Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи Степаненко.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

4. Коди відповідей клавіатури

Переповнення/помилка клавіатури (00h або FFh) – для вказання перепов-

нення буфера клавіатура розміщує 00h у буфер в якості останнього символу для кодів сканування в режимах 2 і 3. Для кодів сканування в режимі 1 – використову-

ється FFh. Клавіатура передає код помилки клавіші, якщо не вдається ідентифіку-

вати замикання контактів на клавіатурі.

Підтвердження (FAh) – клавіатура видає підтвердження (АСК) у відповідь на будь-яку правильну команду, крім команд “Луна” та RESEND. Якщо клавіату- ра переривається під час передачі АСК, то АСК відміняється та клавіатура почи- нає обробку нової команди.

Код завершення ввімкнення живлення (AAh) – після вдалого завершення

ввімкнення живлення клавіатура передає системі код AAh. Передача будь-якого іншого коду після ввімкнення вказує на несправність клавіатури.

Луна (EEh) – клавіатура передає цей код у команду “Луна”.

Ідентифікатор клавіатури (83ABh) – ідентифікатор клавіатури складається з двох байтів. Клавіатура відповідає на команду “Ідентифікатор розширеної клаві- атури” підтвердженням, перериває сканування та передає два байти ідентифікато-

ра. Першим передається молодший байт. Після виводу ідентифікатора клавіатура починає сканування.

Повторне посилання (FEh) – клавіатура передає цей код після отримання неправильних вхідних даних або даних з помилкою паритету.

5. Засоби bios та ms dos для роботи з клавіатурою

5.1 Засоби bios

Обробка клавіатури за допомогою переривання 16h є основним методом

читання даних з клавіатури та визначення її статусу в прикладних програмах. Переривання 16h надає користувачу наступні підфункції.

Читання даних з клавіатури з очікуванням натискання (00h):

Вхід: AH = 00h

Вихід: AL – ASCII-код клавіші;

AH – скан-код клавіші.

Ця функція бере дані з буфера клавіатури, тому з її допомогою не можна визначити натискання таких клавіш, як Alt, Shift і т. п.

Перевірка клавіатури (01h):

Вхід: AH = 01h

Вихід: ZF = ZR = 1, якщо в буфері немає символу;

AL – ASCII-код клавіші;

AH – скан-код клавіші.

Прочитати статус зсувів (02h):

Вхід: AH = 02h

Вихід: AL – статус зсувів.

79

Таблиця 12 – Формат байта статусу зсувів

Біт

Значення

D0

1 – права клавіша Shift натиснена

D1

1 – ліва клавіша Shift натиснена

D2

Не використовується

D3

1 – будь-яка клавіша Alt натиснена

D4

1 – активний режим Scroll Lock

D5

1 – активний режим Num Lock

D6

1 – активний режим Caps Lock

D7

1 – активний режим Insert

Встановлення швидкості генерації символів повторення та паузи (03h):

Вхід: AH = 03h

AL = 05h

BL – швидкість генерації символів

BH – затримка (0 – 0,25 с, 1 – 0,5 с, 2 – 0,75 с, 3 – 1 с)

Вихід: немає.

Функція не використовується з клавіатурою PC XT.

Записати символ у буфер клавіатури (05h):

Вхід: AH = 05h

CL – ASCII-код символу

CH – скан-код або нуль, якщо скан-код байдужий Вихід: AL = 0, якщо операція запису завершилась вдало. Функція не використовується з клавіатурою PC XT.

Читання даних з клавіатури з очікуванням натискання (10h):

Вхід: AH = 10h

Вихід: AL – ASCII-код клавіші;

AH – скан-код клавіші.

Функція є розширенням функції 00h для 101-клавішної клавіатури.

Перевірка клавіатури (11h):

Вхід: AH = 11h

Вихід: ZF = ZR = 1, якщо в буфері немає символу;

AL – ASCII-код клавіші;

AH – скан-код клавіші.

Функція є розширенням функції 00h для 101-клавішної клавіатури.

Прочитати статус зсувів (12h):

Вхід: AH = 12h

Вихід: AL – статус зсувів.

Функція є розширенням функції 00h для 101-клавішної клавіатури.