
- •Архітектура пеом
- •1. Інтервальний таймер і8253/і8254 на платі івм рс: принцип будови та функціонування
- •2.Програмування інтервального таймера на рівні портів
- •3.!Читання конcтант перерахунку каналів інтервального таймера і8253/і8254
- •4.! Читання байту стану каналів 0-2 інтервального таймера: спосіб 1, 2.
- •5.! Системний час в івм рс: таймер bios (таймер ос).
- •6.Засоби bios та ос для роботи з таймером bios.
- •7.Реальний час в івм рс: годинник реального часу (rtc)
- •8.Функціональна схема годинника реального часу та порти доступу (rtc) на платі ibm pc.
- •9. Керуючі та регістри стану годинника реального часу (rtc).
- •10.Сигнальне переривання від годинника реального часу (rtc).
- •11. Періодичне переривання від годинника реального часу (rtc).
- •12.Програмування годинника реального часу (rtc).
- •13.Апаратна реалізація порту послідовної передачі даних на платі ibm pc, принцип побудови уапп.
- •14. Порти асинхронного адаптера та їх призначення
- •16. Контролер прямого доступу до пам’яті (dma). Призначення і основні функції
- •17.! Регістри каналів контролера прямого доступу до пам’яті (dma).
- •18.!Алгоритм ініціалізації контролера прямого доступу до пам’яті (dma).
- •19.! Реалізація прямого доступу до пам’яті (пдп) в івм рс ат
- •20.! Контролер переривань на платі івм рс (і8259): принцип будови та функціонування
- •21.Загальна схема переривань в івм рс ат
- •22.Види переривань: апаратні та програмні переривання
- •23.Особливості обробки апаратних переривань, пріоритети обслуговування запитів на переривання та їх зміна.
- •24. Суть і призначення векторів переривань. Таблиця векторів переривань та зміна її елементів.
- •25.! Порти доступу до контролера переривань на платі івм рс
- •27.Керування пам`яттю. Сегментація пам`яті.
- •28.Дескрипторні таблиці. Селектори сегментів.
- •29.Сторінкова організація пам`яті, сторінкове перетворення адреси.
- •30.Алгоритм сегмента сторінкової адресації.
3.!Читання конcтант перерахунку каналів інтервального таймера і8253/і8254
4.! Читання байту стану каналів 0-2 інтервального таймера: спосіб 1, 2.
5.! Системний час в івм рс: таймер bios (таймер ос).
Сучасні комп’ютери оснащено двома підсистемами таймерів, які паралельно відраховують поточний час. Один таймер розміщено у мікросхемі з низьким споживання енергії (КМОП-мікросхема), яка після вимкнення живлення комп’ютера продовжує функціонувати, отримуючи енергію від вбудованого у комп’ютер аккумулятора (батареї). Цей таймер, як правило, називають годинником реального часу (RTC), більш детально з який познайомимось у лабораторній роботі №3. Інший таймер, реалізований мікросхемою і8253 (вітчизняний аналог – КР580ВН53, в AT – і8254), який надалі будемо називати інтервальним (іноді в літературі – системним), працює, як і решта вузлів комп’ютера, тільки коли ПК увімкнений. Його канал 0 генерує сигнали з частотою приблизно 18,206 Гц, яка викликає апаратні переривання рівня 0 (вектор 08h). Обробник даного переривання, який входить у систему BIOS, з кожним перериванням інкрементує вміст 4-байтної чарунки за адресою 40h:6Ch, яка розміщена у області даних BIOS і називається таймером BIOS або системним таймером. В процесі початкового завантаження комп’ютера програма BIOS чатає показники RTC (години, хвилини та секунди) і, перетворивши їх в кількість секунд від початку поточної доби, множить отриману велечину на 18,206, щоб отримати поточний час, виражене у кількості тактів системного таймера. Ця величина записується у чарунку пам’яті за адресою 40h:6Ch, яка у подальшому інкрементується, що є паралельним з RTC відліком часу системи, поки комп’ютер увімкнений. Саме з цієї чарунки пам’яті системні функції читають поточний час.
6.Засоби bios та ос для роботи з таймером bios.
Засоби BIOS для роботи з таймером Для роботи з таймером (точніше кажучи, для роботи з каналом Про таймера) BIOS містить дві функції переривання INT lAh. Вони дозволяють прочитати поточний вміст лічильника і вимірюв-'нитка його. Функція OOh призначена для читання вмісту лічильника таймера: На вході: АН - OOh. На виході: СХ - старший байт лічильника; DX - молодший байт лічильника; AL • 0, якщо з моменту перезапуску таймера ^ минуло більше 24 годин. Редагувати вміст. Лічильника таймера можна за допомогою наступної функції: На вході: АН = Olh; СХ "старший байт лічильника; DX а = молодший байт лічильника. На виході: Не використовуються. Функцію читання таймера можна використовувати для організації програмної затримки. Так як робота таймера не залежить від продуктивності процесора, швидкодія системи не буде впливати на-формовану затримку. Але слід враховувати, що точність формування затримки визначається частотою оновлення лічильника таймера <18,2 Гц) і може виявитися недостатньою для деяких додатків. Ми підготували функцію для формування затримок з допомогою таймера: / ** . Name. tm_delay. Title Формування затримки по таймеру . Descr Ця функція формує затримку, використовуючи системний таймер. . Proto void tm_delay (lnt ticks) . Pa rams int ticks - величина задержкіiв тиках таймера (за $ одну секунду таймер цокає 18,2 рази). . Return Нічого . Sample tm_samp1.c * / «Include <dos.h> ^ include <conio.h> void tm_delay (int ticks) {_asro { push si mov si, ticks mov ah, 0 Int 1ah mov bx, dx add bx, si detay_loop: Int 1ah cmp dx, bx 'Jne delay_toop pop si} \ Функція використовує тільки одне слово регістра таймера, що дозволяє формувати затримки тривалістю до 65536 тиків таймера. Наведена програма демонструє використання функції для генерації приблизно десятисекундний затримки: ffinclude <stdio.h> ttinclude "sysp.h" ma in () < printf ("\ пДля виконання програмної затримки приблизно" "\ ПНА 10 секунд натисніть будь-яку клавішу."): getch (); printf ("\ п \ пВремя пішло ..."); tm_delay <18 * 10); 'pTintr ("\ пГотово!"); exit (O); } BIOS комп'ютерів IBM AT містить ще дві цікаві функції для роботи з таймером: 83h і 86h переривання INT 15h. функція 83h дозволяє запустити таймер на рахунок, вказавши адресу деякого байта в оперативній пам'яті. Програма, запустивши таймер, відразу після запуску отримує управління. Після закінчення часу, заданого при запуску таймера, функція встановлює старший біт зазначеного байта в одиницю, сигналізуючи такдм чином програмі про завершення зазначеного часового інтервалу. Програма може також скасувати роботу таймера в цьому режимі. Цю функцію зручно використовувати для організації виконання яких-небудь дій паралельно з відліком временив наприклад, можна обмежити час для введення пароля. Наведемо формат виклику функції 83h переривання INT 15h: На вході: АН = 83h; AL = код підфункції: О - встановити інтервал, запустити таймер; 1 - скасувати роботу таймера; СХ - старший байт часу роботи лічильника, задається в мікросекундах; DX - молодший байт счетчікаг ES: BX • "адреса байта, в якому після закінчення інтервалу часу старший біт буде встановлений в одиницю. На виході: Не використовуються. Функція 86h спеціально призначена для формування затримок. Вона дозволяє визначати час затримки в мікросекундах, що зручно для багатьох завдань. Під час виконання затримки дозволені переривання, формат виклику функції: На вході: АН - 86h; СХ • старший байт часу затримки, задається в мікросекундах; DX - молодший байт часу затримки. На виході: Не використовуються.