Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР1-КЛ-09-ВТК.doc
Скачиваний:
1
Добавлен:
23.11.2018
Размер:
334.85 Кб
Скачать

2.2 Робота клавіатури

Клавіатура персонального IBM сумісного комп'ютера містить контролер клавіатури (наприклад мікросхему типу Intel 8048), який зменшує навантаження на центральний процесор ПК. Основна діяльність контролера полягає в стеженні за клавішами і видачі повідомлень ROM-BIOS при натисканні і відпусканні клавіш чи їх комбінацій. Якщо будь-яка клавіша залишається натиснутою більш як напів секунди, контролер надсилає сигнали через задані інтервали часу. Контоллер І8048 має також деякі можливості з діагностування та виявлення помилок, а додатково у буфері контролера може зберігатися інформація про натискання до 20 клавіш, які не зміг прийняти центральний процесор, що у реальному часі буває рідко. Щораз при натисканні чи відпусканні однієї з клавіш схеми клавіатури генерують однобайтове число, яке називається скен-кодом, що однозначно ідентифікує положення клавіші на матриці поля клавіатури. Клавіатура видає різні скен-коди при натисканні і відпусканні клавіші. При натисканні клавіші байт скен-кода містить число в діапазоні від 1 до 83, якщо клавіатура стандартна і містить у конкретному випадку 83 клавіші. При відпусканні клавіші клавіатура генерує скен-код, число якого на 128 більше, ніж скен-код при натисканні клавші, встановлюючи одиницю в старший (сьомий) розряд скен-кода. Наприклад, коли ми натискаємо клавішу Z, у вказаному стандарті клавіатура генерує скен-код 44, а при відпусканні цієї клавіші клавіатура генерує скен-код 172 (44+128). Діаграма на рисунку 2.9 показує клавіші стандартної клавіатури і відповідні їм скен-коди.

При введенні інформації, клавіатура не знає значення клавіші, що натискається, вона просто звітує про ті дії, що відбуваються. Переклад дії натискання клавіші у значущу інформацію, яка використовується програмами — це робота підпрограм ROM-BIOS, що обслуговують клавіатуру. Як ми побачимо, клавіатура зв'язується з ROM-BIOS за допомогою портів і переривань

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

Рисунок 2.9 – Схема та скен-коди стандартної клавіатури PC.

макросів - це скорочення фраз, що вводяться найбільш часто; наприклад, ми можемо дати команду перетворювати комбінацію клавіш, таку як Alt-S, у вітання, що ми використовуємо у своїй кореспонденції, таке як "Щиро Ваш". Ви можете також використовувати клавіші клавіатури для скорочення програмних команд таким чином, що трьох або чотирьох символьні команди можна буде вводити одним натисканням клавіші. Подібні програми працюють, використовуючи комбінацію можливостей двох спеціальних функцій: одна з них є частиною DOS, а друга - частиною ROM-BIOS.

Функція DOS дозволяє програмі залишатися резидентною у пам'яті комп'ютера, непомітно керуючи його операціями, у той час як звичайне керування передається іншим програмам, таким, наприклад, як програма підготовки текстів. Можливості ROM-BIOS дозволяють перехопити потік інформації від клавіатури, так що до того, як інформація потрапить у яку-небудь програму, вона може бути переглянута і змінена.

Щоразу, коли натискається або відпускається яка-небудь клавіша на клавіатурі, про цю дію повідомляє ROM-BIOS за допомогою переривання 9, переривання від клавіатури. Переривання 9 викликає підпрограму обробки переривання, що відповідає на це читання з порту 96 (16-рична адреса 60), щоб визначити, яка клавіша була натиснута або відпущена. Потім очікуваний скен-код повертається і підпрограми, що обслуговують клавіатуру, переводять його в 2-байтний код. Молодший байт цього коду містить звичайно код ASCII клавіші, а старший байт — скен-код клавіатури. Спеціальні клавіші, такі як функціональні клавіші і клавіші додаткової цифрової клавіатури, мають у молодшому байті ноль, а в старшому — скен-код .

Потім підпрограми ROM-BIOS розміщують відтрансльований код у чергу, що знаходиться в молодших адресах пам'яті, з 0000 04IE. Ці коди знаходяться тут доти, поки не будуть запитані програмою, що очікує введення з клавіатури.