- •Лабораторна робота №1 Системні плати пк. Шини сучасних пк
- •Теоретичні відомості
- •1). Підтримка сучасних процесорних технологій.
- •2). Гнучкість стосовно швидко змінних процесорних технологій.
- •3). Підтримка інших нових технологій.
- •Контрольні запитання
- •1). Мікросхема з scsі bіos є на самому контролері (як на відеокартах).
- •2). Образ scsі bіos прошитий у Flash-bіos материнської плати.
- •3). Scsі bіos немає взагалі. Робота всіх scSі-пристроїв забезпечується тільки драйверами операційної системи.
- •1). Мікросхеми пзп.
- •2). Статичне озп.
- •3). Динамічне озп (дозп).
- •Завдання для лабораторної роботи
- •Контрольні запитання
- •1) Управління динаміком з використанням таймера.
- •2) Управління динаміком без таймера.
- •3) Відтворення музики.
- •Завдання для лабораторної роботи
- •Контрольні запитання
- •Лабораторна робота №6. Клавіатура
- •Теоретичні відомості
- •1). Вхідній і вихідній буфери даних.
- •2). Регістр стану (rs).
- •3). Порт контролера 8042 (р1, р2).
- •4) Керуючі сигнали t0 і t1.
- •5) Інтерфейс 8042 з клавіатурою.
- •6) Програмування контролера.
- •1). Обробка клавіш зсуву (Shift, Ctrl, Alt).
- •2). Обробка клавіш-перемикачів (Insert, CapsLock, NumLock, ScrollLock.).
- •3). Комбінація Ctrl-Alt-Del.
- •4). Комбінація Ctrl-Break.
- •6). Алфавітно-цифрові клавіші.
- •7). Спеціальні скан-коди.
- •1) Режими роботи.
- •2) Програмування контролера 8048 блоку клавіатури.
- •Завдання до лабораторної роботи.
- •Контрольні запитання
- •Лабораторна робота №7. Робота з відеопам’яттю в текстовому режимі
- •Теоретичні відомості
- •1) Монохромний mda.
- •2) Кольоровий графічний адаптер cga.
- •3) Розширений графічний адаптер ega.
- •4) Адаптери vga і svga.
- •5) Адаптер mcga.
- •6) Графічні сопроцесори.
- •1) Адаптери mda і cga.
- •2) Адаптер ega.
- •3) Адаптер mcga.
- •4) Адаптер vga.
- •Завдання до лабораторної роботи
- •Контрольні запитання:
- •Лабораторна робота №8 Робота з відеопам’яттю в графічному режимі.
- •Теоретичні відомості.
- •Завдання до лабораторної роботи
2) Програмування контролера 8048 блоку клавіатури.
Все, що було сказане з приводу програмування контролера 8048 системного блоку відноситься і до контролеру блоку клавіатури. Псевдокоманди контролера передаються по ланцюжку: вхідний буфер 8042 системного блоку (порт 60h), передача внутрішнім ПЗ в вихідний порт Р2, передача по інтерфейсу, введення через вхід T1 в 8048 блок клавіатури, розшифровка внутрішнім ПЗ і виконання.
Нижче приводиться перелік команд контролера 8048 блоку клавіатури. Всі команди як однобайтні, так і двохбайтні, передаються тільки через 60h порт і пересилаються контролером 8042 системного блоку по зазначеному вище ланцюжку як нерозпізнані байти даних власних команд.
Перед посилкою кожного байта команди необхідна перевірка на 0 першого біта порта 64h.
В одно- і двохбайтних командах контролер клавіатури після отримання і розшифровки кожного байта вертає в 60h порт код підтвердження FAh.
EDh - керування світлодіодами клавіатури. Для ввімкнення або вимикання світлодіодів після коду команди (EDh) через 60h порт посилається байт даних, біти якого мають наступне призначення:
0: 1 - включити ScrollLock;
1: 1 - включити NumLock;
2: 1 - включити CapsLock;
3-7: - не використовуються.
EEh - луна (для діагностики). Просто вертає ЕЕh;
EFh - холоста команда, вертається код FEh;
F0h - альтернативний режим, наступний байт даних задає режим роботи клавіатури (1, 2 або 3). Якщо послати нульовий байт даних, то вертається поточний режим;
F1h - холоста команда;
F2h - ідентифікатор розширеної клавіатури (вертає FAh і 2 байта ідентифікатора 83АВh розширеної клавіатури іі використовується POST для настройки системи);
F3h - задати затримку і швидкість введення символів. Спочатку клавіатура починає повторювати натиснути клавішу через 0.5 сек. зі швидкістю 10 повторень в секунду. Для зміни цих параметрів, посилається байт даних, біти якого мають наступне призначення:
0-4: кількість повторень в секунду;
5-6: початкова затримка до генерації автоповтора в мсек: 00=250, 01=500, 10=750, 11=1000;
7: повинен бути рівний 0.
F4h - скинути буфер клавіатури і почати сканування;
F5h - привести клавіатуру в початковий стан і заборонити сканування;
F6h - привести клавіатуру в початковий стан і продовжити сканування;
F7h, F8h, F9h, FAh - встановити всі клавіші. Використовуються тільки в режимі три і задають режими роботи всіх клавіш:
F7h - тільки автоповтор;
F8h - натискання/відпускання;
F9h - тільки натискання;
FAh - автоповтор/натискання/відпускання.
FBh, FCh, FDh - встановити окремі клавіші. Команди двохбайтні, байт даних - скан-коди клавіші, якій передвизначена команда. Використовуються тільки в режимі три і задають режими:
FBh - тільки автоповтор;
FCh - натискання/відпускання;
FDh - тільки натискання;
FEh - повторити останню передачу;
FFh - скидання клавіатури і запуск внутрішнього тесту.
Буфер клавіатури
Буфер клавіатури є класичним прикладом кільцевого буферу. Щоправда, назви часом обманливі, і в дійсності він зовсім не зігнутий в кільце і знаходиться не в клавіатурі, а в ОЗП на системній платі. Свою назву кільцевий буфер отримав через засіб реалізації. Буфер клавіатури складається з 32 послідовно (тобто лінійно, а не по кільцю) розташованих байтів, що знаходяться в області даних BIOS. Цей буфер зарезервований програмами BIOS INT 09h і INT 16h в якості зв’язую чого ланок для зберігання і передачі даних клавіатури. INT 09h одержує дані від клавіатури і запам’ятовує їх в буфері і передає їхній прикладній програмі або INT 16h. Оскільки буфер клавіатури є кільцевим буфером, те поточне положення "голови" і "кінця" постійно змінюється.
Буфер клавіатури розміщений по адресам 0040: 001Eh - 0040: 003Ch оперативної пам'яті і дозволяє накопичувати дані (ASCII і скан-коди) про 15 натискань клавіш (на місці, передуючому початку рядку символів в буфері зберігаються ASCII код повернення каретки (ASCII 13) і скан-код клавіші "Enter").
В осередку 0040: 001Ah (покажчик початку) зберігається адреса першого введеного символу, а в осередку 0040: 001Ch (покажчик кінця) - адреса першого вільного осередку після останнього введеного символу. Адреси зберігаються в вигляді байта зміщення (другий байт осередку не використовується). Якщо буфер пустий, то вміст покажчика початку співпадає з вмістом покажчика кінця.
Запис в буфер здійснюється за адресою покажчика кінця, при цьому вміст покажчика збільшується на 2. Читання з буферу виконується за адресою покажчика початку, при цьому вміст покажчика також збільшується на 2 (якщо покажчик містить адресу останнього осередку буферу - 3Ch, то замість збільшення на 2 в нього необхідно записати адресу початку буферу - 1Eh). Коли "кінець" досягне кінця буферу (крайнього верхнього осередку, рис. 6.3 - 0040: 003Ch) то він перейде на початок буферу в нижній частині (рис. 5-0040: 001Еh). Цей перенос (циркуляція) і породив термін "кільцевий буфер". В останній осередок дані не будуть занесені. Замість цього роздасться сигнал з динаміка, що вказує на переповнення буферу клавіатури. Це відбудеться тому, що покажчик "кінця" обмине буфер по колу і досягне логічної "голови" буферу.
Рис.6.3 – Буфер клавіатури
Якщо INT 09h заповнить цей осередок, то "кінець" зсунеться вперед і займе ту ж позицію, що і "голова". Однак треба пам'ятати, що якщо покажчик "голови" рівний покажчику "кінця", то вважається, що буфер пустий, тому останній осередок ніколи не заповнюється.
Таким чином, в буфері клавіатури обсягом 16 слів може зберігатися не більш 15 кодів натиснутих клавіш. Очевидно, що можна перевірити, чи було введення з клавіатури. Треба просто порівняти покажчики "голови" і "кінця" (тобто вміст осередків пам'яті 0040: 001Ah і 0040: 001Ch).