Порти контролера клавіатури

Контролер i8042 має наступні порти:

· 8-розрядний вихідний порт для контролю системних функцій та зв’язку з клавіатурою;

· 8-розрядний вхідний порт для зчитування стану системних функцій;

· 2-розрядний TEST-порт для прийому стану ліній Clock і Data.

 

 

Таблиця 1 – Вихідний порт контролера i8042

 

Біт Значення
D0 1 – системне скидання
  D1 0 – адресація до 1 Мб (Gate A20) 1 – адресація вище 1 Мб (Gate A20)
D3, D2 00 – не використовуються
D4 1 – вихідний буфер повний
D5 1 – вхідний буфер очищено
D6 Clock у клавіатуру
D7 Data у клавіатуру

 

Запис у вихідний порт здійснюється послідовністю команд:

 

 


· запис команди D1h у порт 64h;

· запис значення в порт 60h.

Послідовність команд для читання з вихідного порту:

· запис команди D0h у порт 64h;

· читання буфера – порт 60h.

Перед передачею команд та даних у порти 61h та 60h необхідно звільнити буфер контролера i8042 – порт 60h.

 

 

Таблиця 2 – Вхідний порт контролера i8042

 

Біт Значення
D1, D0 00 – не використовуються
  D2 0 – співпроцесор встановлено 1 – співпроцесор не встановлено
  D3 0 – встановлено співпроцесор i80287 (4 МГц) 1 – встановлено співпроцесор i80287 (8 МГц)
  D4 0 – після ввімкнення живлення вибрана швидкість AUTO 1 – після ввімкнення живлення вибрана швидкість HIGH
  D5 0 – DIP СП ввімкнено контакт 5 (резерв) 1 – DIP СП вимкнено контакт 5 (резерв)
  D6 0 – застосовано монітор COMPAQ 1 – застосовано інший монітор
  D7 0 – замок замкнено 1 – замок відкрито

 


 

 

сті:


Читання значень вхідного порту контролера відбувається в такій послідовно-

 

 

· запис команди C0h у порт 64h;

· читання вихідного буфера (порт 60h) контролера.

Зчитування значень вхідного порту TEST та посилання інформації в контро-


лер i8042 здійснюється так:

· запис команди E0h у порт 64h;

· читання вихідного буфера (порт 60h).

 

 

Таблиця 3 – Байт TEST контролера i8042

 

Біт Значення
D0 Тест 0 – Clock з клавіатури
D1 Тест 1 – Data з клавіатури
D7 – D2 000000 – не використовуються

 

Контролер i8042 має системні порти з адресами 60h (регістр даних в/в) та 64h

(регістр команд/регістр стану).

Перед записом команди або даних у порт 60h або 64h регістр стану контроле-

ра повинен показати, що вхідний буфер вільний; перед читанням даних з порту

60h перевірка регістра стану повинна свідчити, що дані знаходяться у буфері.

 


Процесор системного блока ПЕОМ використовує команду IN для читання даних з вихідного буфера (порт 60h) контролера.Інформація в регістр даних в/в (порт 60h) з клавіатури буде передана по команді 20h – “Читання командного байта”. Для передачі даних у клавіатуру процесор i8042 використовує команду OUT у багатобайтній команді 60h – “Запис командного байта”. При передачі багатобайтної команди в клавіатуру перший командний байт записується в порт

64h, а другий – у порт 60h.

Команда IN, звернена процесором системного блока до порту 64h, викликає читання стану контролера i8042 та клавіатури.

 

 

Таблиця 4 – Порт 64h, регістр стану

 

Біт Значення
  D0 0 – даних у буфері (порту 60h) немає 1 – дані в буфері (порт 60h)
  D1 0 – буфер вільний (60h або 64h) 1 – буфер повний (порт 60h або порт 64h)
  D2 0 – скидання за ввімкненням живлення (холодний старт) 1 – програмне скидання (гарячий старт)
  D3 0 – у вихідному буфері дані 1 – у вихідному буфері команда
  D4 0 – замок закрито 1 – замок відкрито
    D7 – D5 001 – немає передачі 011 – передача є, немає відповіді 101 – передача є, помилка парності

За командою OUT (порт 64h) процесор передає команду в контролер i8042.

Запис у порт 64h свідчить про те, що наступний байт, записаний у порт 60h –

командний.

 

 

Таблиця 5 – Порт 64h, регістр команд

 

Біт Значення
  D0 0 – переривання не виконувати 1 – переривання виконувати
D1 0 – резерв
D2 Системний прапорець записується в поточний розряд регістра стану
  D3 0 – підпорядкування замку 1 – ігнорування замка
  D4 0 – дозвіл клавіатури 1 – заборона клавіатури
  D5 0 – використання 11-розрядного клавіатурного коду (i80286, i80386) 1 – використання кодів, сумісних з i8086 та i8088
  D6 0 – перетворення клавіатурних кодів немає 1 – перетворення клавіатурних кодів у скан-коди, сумісні з i8086/88
D7 0 – резерв

 


Таблиця 6 – Деякі командні коди контролера i8042

 

Код Функція
20h Завантаження поточного командного байта в порт 60h
    60h Завантаження нового командного байта (двобайтова операція): 1) запис 60h у порт 64h; 2) запис командного байта в порт 60h
    AAh Ініціалізація: контролер ініціалізує вхідний та вихідний порти, відключає клавіатуру та очищує буфери; у вихідний буфер (порт 60h) поміщується код 55h
  ADh Заборона клавіатури: встановлення розряду 4 командного байта (порт 64h) контролера
  AEh Дозвіл клавіатури: скидання розряду 4 командного байта (порт 64h) контролера
    C0h Читання вхідного порту: передача контролером стану вхідного порту у вихідний буфер (порт 60h). Команда використовується при вільному вхідному буфері (порт 60h)
    D0h Читання вихідного порту: передача контролером поточного значення вихідного порту у вихідний буфер (порт 60h). Команда використовується при очищеному буфері (порт 60h)
    D1h Запис вихідного порту: розміщення наступного байта, записаного в регістр даних (порт 60h), у вихідний порт контролера. Команду D1h слід використовувати илше для зміни розряду 1
  E0h Читання вхідних ліній Test 0 і Test 1: контролер розміщує поточний стан Test 0 і Test 1 у вихідному буфері (порт 60h)

 


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



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