Операційне слово OCW2

Призначено для виводу команди завершення обробки апаратного перериван-

ня, циклічного зсуву та явної зміни пріоритетів рівнів. Залежно від сполучення значення розрядів встановлюються відповідні режими та команди.

 

 

Таблиця 2 – Формат слова OCW2

 

Біти     Вміст
                 
A0 D7 D6 D5 D4 D3 D2 D1 D0
  R SL EOI     L2 L1 L0
            ´ ´ ´ Звичайне завершення переривання
                            L2     L1     L0 Спеціальне завершення переривання. L2 – L0 – код переривання, що скида- ється в ISR
              ´   ´   ´ Звичайне завершення переривання. Циклічний зсув пріоритетів. Запиту, який вже обслужили присвоюється нижчій пріоритет. Скидається відпо- відний розряд у ISR.

 


Продовження таблиці 2

 

              L2   L1   L0 Спеціальне завершення переривання. Циклічний зсув пріоритетів. L2 – L0 – код дна пріоритетного кільця та номер розряду, що скидаєть- ся в ISR
                            ´     ´     ´ Встановлення режиму циклічного зсуву пріоритетів з автоматичним скиданням розрядів в ISR
                            ´     ´     ´ Встановлення режиму циклічного зсуву пріоритетів з автоматичним скиданням розрядів в ISR
                            L2     L1     L0 Циклічний зсув пріоритетів без авто- матичного завершення переривання. L2 – L0 – код дна пріоритетного кіль- ця
              ´   ´   ´ Немає операції. Код не використову- ється

 

Операційне слово OCW3

Слово наказів, яке дозволяє встановити та відмінити режим спеціальної

маски, перевести контролер у режим опитування та прочитати вміст IRR та ISR. Після виконання команд читання регістра ISR та IRR вміст регістрів зчитується за адресою 20h або A0h. Для отримання вмісту регістра IMR необхідно виконати читання портів за адресами 21h або A1h.

 

 

Таблиця 3 – Формат слова OCW3

 

Біт Призначення
    D2 – D0 010 – читання IRR 011 – читання ISR 111 – режим опитування
D3 Завжди 1
D4 Завжди 0
  D6, D5 10 – відмінити режим спеціальної маски 11 – встановити режим спеціальної маски
D7 Завжди 0
A0 Завжди 0

 

МЕТОДИЧНІ ВКАЗІВКИ

 

 

В даній роботі пропонується дослідити і протестувати програму, яка використовує контролер переривань. Програма дозволяє маскувати/розмаско- вувати переривання заданого рівня, виводити вміст регістрів IRR та ISR на дисплей.

 

 


При роботі з програмою слід уникати маскування переривань контроле-

ра клавіатури та відеосистеми!

Для виконання даної роботи потрібні знання та навички програмування

мовою С, грунтовні знання архітектури та принципів функціонування ПКП, а також знання та навички програмування ПКП.

 

 

ЛІТЕРАТУРА

 

 

1. Гук М. Аппаратные средства IBM PC. Энциклопедия. – СПб.: “Издательс-

тво Питер”, 1999. – 816 с.

2. Гуржій А. М., Коряк С. Ф., Самсонов В. В., Скляров О. Я. Архітектура, принципи функціонування і керування ресурсами IBM PC: Навч. посібник. Харків: ТОВ. “Компанія СМІТ”, 2003. – 512 с.

3. Зубков С. В. Ассемблер для DOS, Windows и Unix. – М.: ДМК, 1999. –

640 с.

 

 

ЗАВДАННЯ

 

 

1. Дослідити текст програми.

2. За текстом програми зарисувати схему алгоритму.

3. На вінчестері створити каталог PKP.

4. За допомогою середовища Borland C++ 3.1 створити символьний файл тексту програми і записати його в каталог DMA.

5. Виконати налагодження програми та запустити її на виконання. Зробити висновки про власний досвід з маскування переривань.

6. Розробити пропозиції з модернізації програми таким чином, щоб з її

допомогою можна було б ідентифікувати та отримувати на екрані список контролерів замаскованих пристроїв.

7. Зробити відповідні зміни в програмі, що дозволять визначат вміст програмно доступних регістрів веденого ПКП.

8. Зробити висновки.

 

 

ТЕКСТ ПРОГРАМИ

 

 

#include <conio.h>

#include <stdio.h>

 

void main (void)

{

unsighed i;

int mask;

char c = „y‟;

 

clrscr ();

printf (“Ведучий контролер (MASTER):\n”);

 

outp (0x20, 0x0A);

 


printf (“Стан регістра IRR: %02.2X\n”, inp (0x20));

outp (0x20, 0x0B);

printf (“Стан регістра ISR: %02.2X\n”, inp (0x20));

 

printf (“Стан регістра IMR: %02.2X\n”, inp (0x21));

 

while (c!= „n‟) {

printf (“Введіть 16-ий код маски або розмаскування: ”);

scanf (“%X”, &mask);

 

outp (0x21, mask);

printf (“Стан регістра IMR: %02.2X\n”, inp (0x21));

 

printf (“Бажаєте ще (y/n)?”);

c = getch ();

}

}

 

КОНТРОЛЬНІ ЗАПИТАННЯ

 

 

1. Таблиця адрес векторів переривань ПЕОМ IBM PC/AT, її призначення.

2. Які функціональні вузли входять до складу i8259A? Призначення, харак-

теристики.

3. В яких станах може знаходитися ПКП?

4. Яку структуру переривань підтримує режим фіксованих пріоритетів?

5. Для яких цілей використовується режим маскування переривань?

 



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



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