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

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

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

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

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

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

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

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

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

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

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

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

Засоби BIOS та MS DOS для роботи з клавіатурою

Засоби BIOS

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

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

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

Вхід: AH = 00h

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

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

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

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

Вхід: AH = 01h

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

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

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

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

Вхід: AH = 02h

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

 


Таблиця 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-клавішної клавіатури.

Засоби MS DOS

Функції DOS переривання 21h, як правило, використовуються програмами,

які повинні забезпечувати максимальну сумісність з усіма типами ПК самої операційної системи та її утилітами. У DOS клавіатура призначається стандарт- ним пристроєм вводу і їй присвоюється покажчик 0.

 

 


Очікування надходжень та читання символу зі стандартного пристрою вводу з луною на стандартний пристрій виводу та обробкою Ctrl + Break:

Вхід: AH = 01h

Вихід: AL – код символу; клавіші типу F11 необхідно обробляти за два виклики.

Читання зі стандартного пристрою вводу (без очікування) або запис на стандартний пристрій виводу:

Вхід: AH = 06h

DL = FFh, якщо необхідно прочитати символ

DH = 0 – FEh, якщо необхідно вивести цей код

Вихід: ZF = 0, якщо символ був прочитаний;

AL – код прочитаного символу (якщо функцію викликали з DL =

= FFh).

Очікування надходження та читання символу зі стандартного пристрою вводу без луни та обробки Ctrl + Break:

Вхід: AH = 07h

Вихід: AL – код символу; клавіші типу F11 необхідно обробляти за два виклики.

Очікування надходження та читання символу зі стандартного пристрою вводу без луни, але з обробкою Ctrl + Break:

Вхід: AH = 08h

Вихід: AL – код символу; клавіші типу F11 необхідно обробляти за два виклики.

Буферизований ввод зі стандартного пристрою вводу: Вхід: AH = 0Ah

DS:DX – адреса для запису рядка, що вводиться (в першому байті –

максимальна довжина рядка).

Вихід: немає (в другому байті буфера – довжина прочитаного рядка).

Перевірити стандартний пристрій воду: Вхід: AH = 0Bh

Вихід: AH = 00h, якщо є символ; FFh – якщо символу немає.

Очищення буфера стандартного пристрою вводу та читання символу за допомогою вказаної функції:

Вхід: AH = 0Ch

AL – номер функції DOS (01h, 06h – 08h, 0Ah)

Вихід: згідно з підфункцією, що викликається.

 

 

МЕТОДИЧНІ ВКАЗІВКИ

 

 

В даній роботі пропонується дослідити і протестувати програму, яка працює з контролером клавіатури.

Для виконання роботи необхідні грунтовні знання архітектури та принципів функціонування контролера клавіатури, а також знання та навички програмного доступу до регістрів i8042.

 

 


ЛІТЕРАТУРА

 

 

1. Гук М. Аппаратные средства IBM PC. Энциклопедия. – СПб.: “Издательс-

тво Питер”, 1999. – 816 с.

2. Гуржій А. М., Коряк С. Ф., Самсонов В. В., Скляров О. Я. Архітектура, принципи функціонування і керування ресурсами IBM PC: Навч. посібник.

Харків: ТОВ. “Компанія СМІТ”, 2003. – 512 с.

3. Зубков С. В. Ассемблер для DOS, Windows и Unix. – М.: ДМК, 1999. –

640 с.

4. Фролов А. В., Фролов Г. В. Аппаратное обеспечение персонального ком-

пьютера. – М.: ДИАЛОГ МИФИ, 1997. – 304 с.

 

 

ЗАВДАННЯ

 


 

 

му.


1. Дослідити програму leds. За текстом програми нарисувати схему алгорит-

 

 

2. На вінчестері створити каталог KEY.

3. За допомогою редактора середовища програмування Borland C++ 3.1


створити символьний файл тексту вивченої програми та записати його в каталог

KEY.

4. Виконати налагодження програми та запустити її на виконання.

5. Зробити висновки про власний досвід з перевірки встановлення індика-

торів на клавіатурі.

6. Розробити рекомендації з модернізації програми таким чином, щоб з її до-

помогою можна було встановити індикатори в заданому порядку.

7. Зробити висновки.

 

 

ТЕКСТИ ПРОГРАМ

 

 

// leds

MODEL TINY

CODE

ORG 100h

START:

// вимкнення всіх індикаторів

MOV DL, 0

CALL INDIKATOR

// цикл до натискання клавіші

WHILE:

// вмикає Num Lock

MOV DL, 2

CALL INDIKATOR

// затримка на 0,5 секунди

CALL TIME

// вимкнення індикатора

MOV DL, 0

CALL INDIKATOR

 

 


// вмикає Caps Lock

MOV DL, 4

CALL INDIKATOR CALL TIME

 

MOV DL, 0

CALL INDIKATOR

// вмикає Scroll Lock

MOV DL, 1

CALL INDIKATOR CALL TIME

 

MOV DL, 0

CALL INDIKATOR

// перевірка наявності символу в буфері клавіатури

MOV AH, 01h

INT 16h

MOV DL, 0

// якщо символу немає, продовжити цикл

JZ WHILE

// якщо символ є, прочитати його і очистити буфер

MOV AH, 00h

INT 16h

 

MOV DL, 0

CALL INDIKATOR RET

INDIKATOR PROC NEAR

// надіслати в порт команду керування світлодіодами

MOV AX, 00EDh

OUT 60h, AL

// невелика затримка

CALL DELAY

// ввімкнути або вимкнути певний індикатор

MOV AL, DL OUT 60h, AL RET

INDIKATOR ENDP

 

DELAY PROC NEAR

MOV CX, 4000

FOR:

LOOP FOR RET

DELAY ENDP

 

TIME PROC NEAR

// прочитати значення годинника реального часу

MOV AH, 0

INT 1Ah

// додати до цього значення 0,5 секунди

 


ADD DX, 9

// зберегти отримане значення

MOV BX, DX REPEAT:

// цикл до настання потрібного часу

INT 1Ah

CMP DX, BX

JNE REPEAT RET

TIME ENDP

 

END START

 

КОНТРОЛЬНІ ЗАПИТАННЯ

 

 

1. Яке апаратне переривання формується при натисненні та відтисканні клавіші?

2. Вкажіть призначення портів 60h, 61h, 64h.

3. Назвіть команди керування клавіатурою та їх призначення.

4. Які функції переривання 21h використовуються для керування клавіату-

рою?

 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: