урі - незалежно від активності на центральному процесорі x86.
За кожною клавішею клавіатури закріплений певний номер, однозначно пов'язаний з розпаюванням клавіатурної матриці і не залежний безпосередньо від позначень, нанесених на поверхню клавіш. Цей номер називається скан-кодом (назва підкреслює той факт, що комп'ютер сканує клавіатуру для пошуку натиснутоюклавіші). Скан-код - це випадкове значення, вибране IBM ще тоді, коли вона створювала перші клавіатуру для ПК. Скан-код не відповідає ASCII-коду клавіші, однієї і тієї ж клавіші можуть відповідати кілька значень ASCII-коду.
Насправді клавіатура генерує дві скан-коду для кожної клавіші - коли користувач натискає клавішу і коли відпускає. Наявність двох скан-кодів важливо, так як деякі клавіші мають сенс тільки тоді, коли вони натиснуті (Shift, Control, Alt).
При натисканні клавіші на клавіатурі відбувається замикання електричного контакту (див. рис.1). В результаті при наступному скануванні мікроконтролер фіксує натискання певної клавіші і посилає в центральний комп'ютер скан-код натиснутоюклавіші і запит на переривання. Аналогічні дії виконуються і тоді, коли оператор відпускає натиснуту раніше клавішу.
Малюнок 1. Мікросхема Клавіатури
Другий мікроконтролер отримує скан-код, виробляє перетворення скан-коду, робить його доступним на порту введення-виведення 60h і потім генерує апаратне переривання центрального процесора. Після цього процедура обробки переривання може отримати скан-код із зазначеного порту вводу-виводу.
Слід також зазначити, що клавіатура містить внутрішній 16-байтовий буфер, через який вона здійснює обмін даними з комп'ютером
. 2 Низькорівневе взаємодію з клавіатурою через порти введення-виведення
Взаємодія з системним контроллером клавіатури відбувається через порт вводу-виводу 64h. Зчитавши байт з цього порту, можна визначити статус контролера клавіатури, записавши байт - послати контролеру команду.
Взаємодія з мікроконтролером в самій клавіатурі відбувається за допомогою портів вводу-виводу 60h і 64h. Біти 0 і 1 в байті статусу (порт 64h в режимі читання) надають можливість управляти процедурою взаємодії: перед записом даних в ці порти біт 0 порту 64h повинен бути виставлений в 0. Коли дані доступні для читання з порту 60h, біт 1 порту 64h дорівнює 1. Біти включення/вимикання клавіатури в командному байті (порт 64h в режимі запису) визначають, чи є клавіатура активної, і чи буде контролер клавіатури викликати переривання в системі, коли користувач натисне клавішу.
Байти, записані в порт 60h, надсилаються контролеру клавіатури, а байти, записані в порт 64h, надсилаються системного контроллера клавіатури. Списки дозволених команд, які можна послати контролеру клавіатури, представлені в двадцятому розділі книги The Art of Assembly Language Programming .
Байти, що прочитуються з порту 60h, приходять від клавіатури. Порт 60h при читанні містить скан-код останньої натиснутоюклавіші, а в режимі запису він використовується для розширеного управління клавіатурою. При використанні порту 60h на запис програма додатково отримує наступні можливості:
· встановлення тривалості очікування перед переходом клавіатури в режим автоповтора;
· установка періоду генерації скан-коду в режимі автоповтора;
· управління світлодіодами, розташованими на лицьовій панелі клавіатури - Scroll Lock, Num Lock, Caps Lock.
Необхідно відзначити, що для читання даних, що вводяться з клавіатури, достатньо вміти зчитувати значення портів вводу-виводу 60h і 64h. Однак в ОС Windows додаткам користувацького режиму заборонено працювати з портами, тому це завдання виконують драйвера операційної системи.
1.3Архітектура інтерактивних пристроїв введення
В ОС Windows обробку апаратного переривання, яке генерується при появі в порту 60h даних, отриманих від клавіатури, виробляє драйвер i8042prt.sys, він же зареєстрував процедуру обробки апаратного переривання клавіатури IRQ1. На відміну від часів MS DOS, коли кожен системний компонент був ніби сам по собі raquo ;, в Windows всі компоненти побудовані згідно чіткої архітектурі і працюють за суворо визначеними правилами, закріпленим програмними інтерфейсами. Тому перед тим як приступити до розгляду драйвера i8042prt, ми розглянемо архітектуру інтерактивних пристроїв введення, в рамках якої функціонують всі програмні компоненти, пов'язані з обробкою клавіатурного (і мишачого ) введення.
Пристрої, що використовуються для прямого управління операціями на комп'ютері, в ОС Windows називаються інтерактивн...