
- •Передмова
- •Intel 430lx
- •Intel 430nx
- •Intel 430fx
- •Intel 430hx
- •Intel 430vx
- •Intel 430tx
- •Intel 450gx/kx
- •Intel 440fx
- •Intel 440lx agPset
- •Intel 440ex
- •Intel 440bx agPset
- •Заняття 1. Поняття про систему переривання пеом
- •Принципи організації системи переривання програм
- •Слово стану процесора (програми)
- •Характеристики системи переривання
- •Організація переходу до перериваючої програми та пріоритетне обслуговування запитів переривання
- •Процедура переривання з опитуванням джерел (прапорців) переривання
- •Програмно-керований пріоритет перериваючих програм
- •Методи використання механізму переривань
- •Класи переривань пеом
- •Призначення контролера апаратних переривань пеом
- •Опис основних елементів і8259а
- •Стани програмованого контролера переривань
- •Заняття 5. Керування режимами роботи пкп
- •Void main (void){
- •Int mask;
- •Заняття 6. Керування пріоритетами переривань
- •Install proc near
- •Заняття 8. Особливості практичного використання апаратних та програмних переривань
- •Volatile long ticks;
- •Void main(void) {
- •Void _interrupt _far timer(void) {
- •Int8 proc near cli
- •Int09 proc near
- •Розділ 3. Підсистема таймера та годинника реального часу
- •Заняття 3. Системні засоби програмного доступу до ресурсів таймера
- •Void tm_delay(int ticks) {
- •Void main (void){
- •Void main(void){
- •Заняття 4. Приклади використання функціональних можливостей таймера в прикладних задачах
- •Void main(void){ int Frac; char k;
- •Void tm_sound(int freq, int time) {
- •Void tm_delay(int ticks) {
- •Void tm_sound(int freq, int time){
- •Void main(){
- •Void main() { int I,j; clrscr();
- •Заняття 5. Архітектура та принципи функціонування годинника реального часу
Void main(void){
unsigned long Time_mkc; // Time_mkc — час затримки
unsigned int LoW, HiW; // LoW, HiW - молодший
//та старший байти
clrscr(); //Очищення екрана
ргииі("Введіть час затримки мкс (1 сек=1000000 мкс - ");
scanf("%ld", &Time_mkc); //Введіть затримку
printf("\n\n"); //Пропущення рядка
LoW = (unsigned int)(Time_mkc & OxOOOOFFFF);
HiW= (unsigned int)((Time_mkc & 0xFFFF0000)»16);
asm { //Формування молодшого та
//старшого байтів затримки
pusha //Зберігаємо в стеку всі регістри
mov ah, 0x86 //Заносимо в ah номер функції 0x86
mov ex, HiW // Заносимо в сх старший байт затримки
mov dx, LoW //Заносимо в dx молодший байт затримки
asm {
int 0x15
рора
//Викликаємо оброблювач переривання INT 15h //Відновлюємо вміст регістрів
} printf(«4ac затримки закінчився!!! \п\п»);
//Вивід на екран повідомлення
}
2. За допомогою редактора середовища програмування Borland C++ V3.01 створіть символьний файл тексту вивченої Вами програми формування часового інтервалу та запишіть його в каталог TIME.
3. Виконайте настройку програми та запустіть її на виконання.
4. Порівняйте характеристики цієї програми з характеристиками попередньої (розмір використовуваного коду, точносні характеристики, можливі впливи на роботу системи). Зробіть відповідні висновки та розробіть рекомендації по застосуванню розглянених підходів до формування часових інтервалів у прикладних програмах.
Питання для самоконтролю знань
1. Назвіть засоби BIOS, що використовуються для роботи з таймером. Які функції вони реалізують?
2. Наведіть приклади використання функцій переривання INT lAh для роботи з каналом 0.
3. Наведіть приклади використання функції читання таймера для організації програмної затримки.
4. Наведіть приклади використання функцій 83h та 86h переривання INT 15h. З якою метою вони використовуються?
5. Назвіть засоби MS-DOS, що використовуються для роботи з таймером. Які функції вони реалізують?
6. Наведіть приклади використання функції 2Ah переривання INT 21h. З якою метою вона використовується?
7. Наведіть приклади використання функції 2Bh переривання INT 21h. З якою метою вона використовується?
8. Наведіть приклади використання функції 2Ch переривання INT 21h. З якою метою вона використовується?
9. Наведіть приклади використання функції 2Dh переривання INT 21h. З якою метою вона використовується?
Резюме
Для роботи з таймером BIOS містить дві функції OOh та Olh переривання INT lAh. Вони дозволяють прочитати поточний вміст лічильника таймера та змінити його. Функцію читання таймера можна використовувати для організації програмної затримки в прикладних програмах. Оскільки робота таймера не залежить від продуктивності процесора, швидкодія системи не буде впливати на затримку, що формується, і є надзвичайно важливою при експлуатації прикладних програм на комп'ютерах з різними за швидкодією апаратними платформами.
BIOS комп'ютерів IBM PC AT містить ще дві функції для роботи з таймером: 83h та 86h переривання INT 15h. Функцію 83h зручно використовувати для організації виконання яких-небудь дій паралельно з відліком часу, наприклад, можна обмежити час для вводу пароля. Функція 86h призначена для формування часових затримок. Вона дозволяє визначити час затримки в мікросекундах, що зручно для багатьох задач, які розв'язуються в реальному масштабі часу.
Оброблювач переривання INT 21h MS-DOS містить чотири функції 2Ah, 2Bh, 2Ch, 2Dh для роботи з системним таймером. Ці функції дозволяють дізнатись та встановити поточну дату та час.
Ваш наступний крок
Функції переривань INT lAh, INT 15h BIOS та INT 21h MS-DOS, розглянені у цьому занятті, дозволяють значно спростити керування таймером на прикладному рівні програмування. Але вони не вичерпують усіх функціональних можливостей по керуванню обладнанням таймера. Тому на наступному занятті Ви дізнаєтесь, як примусити Ваш ПК програвати фрагменти музичних творів або формувати послідовності псевдовипадкових чисел.