Методи програмного керування клавіатурою

Керування клавіатурою можливе через:

· порти 60h, 61h, 64h безпосереднім посиланням відповідних команд та даних;

· переривання INT 09h;

· переривання INT15h;

· функції DOS переривання 21h.

За допомогою порту 61h можна визначити, чи доступний контролер клавіату- ри і дозволити (заборонити) достіп до нього. Причому, якщо значення, що повертається з порту 61h містить у сьомому розряді нуль, то контролер клавіатури

не доступний.

Порт 60h призначений для читання даних з клавіатури.

За допомогою порту 64h можна читати дані з клавіатури (коди клавіш і статус), програмувати та здійснювати налагодження клавіатури.

Рекомендується використовувати порт 60h для читання скан-кодів, а 64h –

для визначення статусу та програмування клавіатури.

При програмуванні контролера клавіатури необхідно попередньо в порт 64h

записати код команди, зробити затримку та далі записати байт даних.

 


Таблиця 7 – команди контролера клавіатури

 

Код Функція
EDh Встановити індикатори стану
EEh Луна (засіб діагностування)
F0h Вибрати альтернативний режим
EFh – F1h Резерв – холості команди
F2h Ідентифікатор розширеної клавіатури
F3h Встановити частоту повторення клавіш
F4h Дозволити клавіатуру
F5h Заборона за замовчуванням
F6h Встановити умови за замовчуванням
F7h – FAh Встановити всі клавіши
FBh – FDh Встановити окремі клавіши
FEh Послати повторно
FFh Скидання

 

Встановити індикатори стану (EDh) – двобайтова команда, яка змінює стан світлодіодних індикаторв клавіатури. Після отримання цієї команди клавіатура припиняє сканування, повертає системі код АСК (FAh – код підтвердження) та очікує від системи байта конфігурації. Байт конфігурації визначає встановлення світлодіодних індикаторів.

Після отримання байта конфігурації клавіатура встановлює індикатор стану, повертає код АСК та поновлює сканування. Якщо в той час, коли клавіатура

очікує байт конфігурації, надходить інша команда, виконання команди “Встано-

вити індикатори стану” припиняється й виконується нова команда.

 

 

Таблиця 8 – Формат слова стану світлодіодних індикаторів

 

Біт Значення
D0 Стан індикатора Scroll Lock (1 – ввімкнено)
D1 Стан індикатора Num Lock
D2 Стан індикатора Caps Lock
D7 – D3 Не використовуються

 

Луна (EEh) – використовується для діагностування. Після отримання цієї команди клавіатура повертає відповідь – “Луна” (EEh).

Вибрати альтернативний режим (F0h) – клавіатура підтверджує цю дво- байтову команду, скидає вихідний буфер і повторення клавіші. Після цього вона готується до прийому байта конфігурації, який задає робочий режим. Клавіатура

підтверджує байт конфігурації, встановлює новий робочий режим і поновлює сканування. Байт конфігурації повинен містити номер режиму клавіатури, який встановлюється. Коли система посилає байт конфігурації 00h, клавіатура відпові- дає кодом підтвердження та посилає байт конфігурації, який вказує системі

поточний режим.

Холості операції (EFh – F1h) – у відповідь на таку команду клавіатура

 


посилає код повторного посилання (FEh), не починаючи ніяких інших дій.

Ідентифікатор розширеної клавіатури (F2h) – ця команда передається кла-

віатурі ри ввімкненні живлення. Клавіатура відповідає кодом АСК, припиняє сканування, передає ідентифікатор клавіатури і поновлює сканування.

Встановити частоту повторення клавіші (F3h) – це двобайтова команда, яка змінює значення затримки та частоти повторення клавіші. Схема роботи цієї

команди аналогічна схемі роботи команди “Встановити індикатор стану” (EDh). Як тільки клавіатура отримує команд “Встановити частоту повторення клавіші”, вона припиняє сканування та повертає код АСК. Після цього система посилає клавіатурі байт, в якому міститься значення частоти та часу затримки. Частота повторення показує, скільки разів за секунду повторюється дана клавіша. Час затримки – це час, протягом якого клавіша повинна утримуватися натисненою, перш ніж почнеться функція повторення. Клавіатура повертає код АСК та зали-

шається в попередньому стані сканування – дозволеному або забороненому.

Для поновлення сканування а повинна бути передана команда “Дозволити клавіатуру” (F4h).

 

 

Таблиця 9 – Формат байта частоти повторення та часу затримки

 

Біт Значення
    D4 – D0 Частота повторення (повторювань за секунду): 00000 – 30,0 01010 – 12,0 10100 – 5,0 00001 – 26,6 01011 – 10,9 10101 – 4,6 00010 – 24,0 01100 – 10,0 10110 – 4,3 00011 – 21,6 01101 – 9,2 10111 – 4,0 00100 – 20,0 01110 – 8,6 11000 – 3,7 00101 – 18,4 01111 – 8,0 11001 – 3,3 00110 – 17,1 10000 – 7,5 11010 – 3,0 00111 – 16,0 10001 – 6,7 11011 – 2,7 01000 – 15,0 10010 – 6,0 11100 – 2,5 01001 – 13,3 10011 – 5,5 11101 – 2,3
    D6 – D5 Час затримки (мс): 00 – 250 10 – 750 01 – 500 11 – 1000
D7 0 – не використовується

 

Дозволити кавіатуру (F4h) – дозволяє клавіатурі почати сканування. Після отримання цієї команди клавіатура повертає код АСК, скидає вихідний буфер та починає процедуру сканування.

Заборона за замовчуванням (F5h) – зупиняє сканування клавіатури. Після отримання цієї команди клавіатура повертає системі код АСК та:

· скидає частоту повторення клавіші та час затримки;

· припиняє сканування;

· очищує буфер клавіатури;

· встановлює типи клавіш за замовчуванням (тільки для режиму 3);

 

 


· скидає останню повторювану клавішу;

· очікує подальших команд.

Встановити умови за замовчуванням (F6h) – за цією командою клавіатура посилає код АСК та:

· скидає частоту повторення клавіші та час затримки;

· очищує буфер клавіатури;

· встановлює типи клавіш за замовчуванням (тільки для режиму 3);

· скидає останню повторювану клавішу;

· продовжує сканування.

Встановити всі клавіші (F7h – FAh) – клавіатура посилає підтвердження отримання команди, очищує вихідний буфер, встановлює всі клавіші так, як це вказано командою, та продовжує сканування, якщо воно до цього було дозволене. Ця команда використовується тільки в режимі 3.

 

 

Таблиця 10 – Призначення команд встановлення клавіш

 

Код Функція
F7h Тільки повторення
F8h Тільки натискання/відтискання
F9h Тільки натискання
FAh Повторення/натискання/відтискання

 

Встановити окремі клавіші (FBh, FCh, FDh) – за командою клавіатура під- тверджує отримання цієї двобайтової команди, встановлює команду коду окремої клавіші, очищує вихідний буфер, припиняє сканування та очікує байт ідентифі- кації клавіші. Ідентифікація клавіші виконується за допомогою коду сканування позиції клавіші. Клавіатура підтверджує байт ідентифікації клавіші, встановлює новий тип клавіші та очікує наступну команду. Клавіатура не поновлює сканування, поки система не дозволить зробити це шляхом команди “Дозволити клавіатуру” (F4h), що дає можливість одночасного встановлення кількох клавіш. Ця команда використовується тільки в режимі 3.

 

 

Таблиця 11 – Призначення команд встановлення окремих клавіш

 

Код Функція
FBh Тільки повторення
FCh Тільки натискання/відтискання
FDh Тільки натискання

 

Послати повторно (FEh) – команда видається тільи після передачі даних з клавіатури. Клавіатура відповідає повторною передачею останнього байта, пере- даного системі. Якщо останній переданий байт був RESEND (FEh), клавіатура передає байт, що передував йому.

Скидання (FFh) – за командою “Скидання” клавіатура повертає системі код

АСК. Для того, щоб прийняти цей код, система збуджує лінії Clock і Data не менш ніж на 500 мкс. Після отримання команди “Скидання” клавіатура забороняється

 


або до прийняття системного код АСК, або до видавання на клавіатуру іншої команди.


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



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