- •Архітектура комп’ютерів методичний посібник для проведення лабораторних робіт
- •Лабораторна робота № 1 перетворення чисел в машинних кодах
- •Теоретичні відомості
- •1. Формати даних
- •1.1 Природна форма числа
- •1.2 Нормальна форма числа
- •2. Машинні коди чисел
- •Методичні вказівки
- •Література
- •2.1 Дії над числами в природній формі
- •2.2 Дії над числами в нормальній формі
- •Завдання
- •Лабораторна робота № 2 цеом нейманівської архітектури
- •Теоретичні відомості
- •1. Структура еом
- •2. Елементарні машинні операції
- •3. Формати команд та кодування операцій еом
- •Методичні вказівки
- •Література
- •Завдання
- •1. Схема алгоритма розв’язку задачі
- •2. Програма в змістовній формі
- •3. Система операцій еом
- •4. Кодування операцій еом
- •5. Адресна інформація в 16-й системі числення
- •6. Розподіл пам’яті
- •7. Програма в машинних кодах
- •1. Загальні відомості про системи прямого доступу до пам’яті
- •2. Прямий доступ до пам’яті в пеом
- •3. Призначення та формати регістрів кпдп
- •3.1 Регістр станів (stat)
- •3.2 Регістр команд (cr)
- •3.3 Регістр режиму (mod)
- •3.4 Регістр маски (mask)
- •3.5 Регістр запиту (req)
- •3.6 Регістр поточної адреси
- •3.7 Регістр поточного лічильника слів (ccr)
- •3.8 Базові регістри адрес та лічильника (bar та car)
- •3.9 Тимчасовий регістр (tr)
- •3.10 Канали системи пдп пеом
- •4. Ініціалізація кпдп
- •Методичні вказівки
- •Література
- •Завдання
- •Текст програми
- •Контрольні запитання
- •1. Принципи організації системи переривань
- •2. Стани програмованого контролера переривань.
- •3. Призначення та формати операційних слів пкп
- •3.1 Операційне слово ocw1
- •3.2 Операційне слово ocw2
- •3.3 Операційне слово ocw3
- •Методичні вказівки
- •Література
- •Завдання
- •Текст програми
- •Контрольні запитання
- •Лабораторна робота № 5
- •Генерації звуку та випадкових чисел
- •Теоретичні відомості
- •1. Призначення таймера
- •2. Архітектура та принципи функціонування таймера
- •3. Програмування таймера
- •4. Засоби bios для роботи з таймером
- •5. Генерація звукових сигналів
- •6. Генерація випадкових чисел
- •Методичні вказівки
- •Література
- •Завдання
- •Тексти програм
- •Лабораторна робота № 6 вивчення та дослідження методів програмного керування годинником реального часу
- •Теоретичні відомості
- •1. Призначення годинника реального часу
- •2. Призначення та формати регістрів кмон-пам’яті
- •3. Засоби bios для роботи з годинником реального часу
- •Методичні вказівки
- •Література
- •Завдання
- •Тексти програм
- •Лабораторна робота № 7 дослідження режимів роботи послідовних інтерфейсів пеом
- •Теоретичні відомості
- •1. Загальні відомості про інтерфейс
- •2. Використання порту rs232c
- •3. Функції апаратних засобів інтерфейса rs232c
- •4. Формати портів уапп
- •5. Ініціалізація уапп
- •6. Підтримка асинхронного адаптера в bios
- •7. Підтримка асинхронного адаптера в dos
- •Методичні вказівки
- •Література
- •Завдання
- •Тексти програм
- •1. Призначення та характеристики інтерфейса Centronics
- •2. Опис портів інтерфейса Centronics
- •Тексти програм
- •3. Засоби bios для роботи з принтером
- •Методичні вказівки
- •Література
- •5. Гук м. Аппаратные средства ibm pc. Энциклопедия. – сПб.: “Издательс-тво
- •Завдання
- •Лабораторна робота № 9 дослідження методів програмного керування контролером клавіатури
- •Теоретичні відомості
- •1. Контролер клавіатури pc/at i8042
- •2. Порти контролера клавіатури
- •3. Методи програмного керування клавіатурою
- •4. Коди відповідей клавіатури
- •5. Засоби bios та ms dos для роботи з клавіатурою
- •5.1 Засоби bios
- •5.2 Засоби ms dos
- •Методичні вказівки
- •Література
- •Завдання
- •Тексти програм
- •Лабораторна робота № 10 дослідження методів програмного керування контролером нгмд
- •Теоретичні відомості
- •1. Основні відомості про контролер нгмд
- •2. Програмування контролера нгмд
- •Методичні вказівки
- •Література
- •Завдання
- •2) Записати введений користувачем рядок у сектор s на доріжку t;
- •Контрольні запитання
- •Література
- •1. Гук м. Аппаратные средства ibm pc. – сПб.: “Питер”, 1999. – 816 с.
Лабораторна робота № 9 дослідження методів програмного керування контролером клавіатури
Мета роботи:
вивчити методи програмного доступу до регістрів контролера i8042;
навчитись розрбляти програми, що аналізують стан програмно доступних регістрів i8042;
навчитись ідентифікувати коди станів контролера клавіатури;
навчитись використовувати можливості програмного керування клавіатурою в прикладних програмах.
Теоретичні відомості
1. Контролер клавіатури pc/at i8042
Програмований контролер i8042 застосовується в машинах класу AT. Його
вбудоване програмне забезпечення зберігається в масковому внутрішньому ПЗП і не допускає змін. Ця програма забезпечує видачу запиту на переривання при
прийомі скан-кода від клавіатури і видачу керуючих команд від центрального процесора. Крім керування клавіатурою, через програмно доступні лінії зовнішніх портів контролера формуються сигнали керування вентилем Gate A20, апаратного системного скидання і зчитуються сигнали від конфігураційних перемикачів системної плати. Контролера i8242B, окрім інтерфейса клавіатури, підтримує і аналогічний інтерфейс додаткового пристрою, наприклад PS/2 – Mouse.
2. Порти контролера клавіатури
Контролер 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 у клавіатуру |
Запис у вихідний порт здійснюється послідовністю команд:
72
запис команди 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 перевірка регістра стану повинна свідчити, що дані знаходяться у буфері.
73
Процесор системного блока ПЕОМ використовує команду 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 – резерв |
74
Таблиця 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) |
