МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

Кафедра « Электронных вычислительных машин »

«Исследование систем прерываний на основе контроллера прерываний

K1810BH59A для микропроцессоров К580ВМ80 и К1810ВМ86»

Отчет по лабораторной работе № 3

по дисциплине «Микропроцессорные системы».

Вариант 14

Выполнил студент группы ВМ-41 _____________ёв

(подпись)

Проверил к. т.н., доцент каф. ЭВМ _____________

(подпись)

Киров 2002 г.

1 Задание

- разработать программу инициализации ПКП для режимов фиксированных приоритетов, спецмаскирования и программного опроса;

- разработать текст пользовательской программы, во время выполнения которой приходят запросы на прерывания IRQ;

- разработать тексты подпрограмм обработки прерываний, во время выполнения которых также могут приходить запросы IRQ;

- выполнить исследования принципов обслуживания запросов для следующих дисциплин обслуживания прерываний:

1.  фиксированных приоритетов;

2.  специального маскирования;

3.  циклического сдвига с использованием OCW2 по типу А;

4.  циклического сдвига с использованием OCW2 по типу B (L2-L0 = №ППОП+Х);

5.  программного опроса;

Обозначения:

8* - процессор i8080 с шагом 8

# - каскадное включение:

$ - ведомая БИС

& - ведущая БИС с PSV0

Таблица 1 – Задание на л. р.

Задание

Вариант 14

1. фиксированные

#$

2. спецмаскирование

3. сдвиг типа А

#&

4. сдвиг типа В

5. программный опрос

8*

Х для типа В

2

Ведомые на

0, 4

Базовый адрес контроллера:

НЕ нашли? Не то? Что вы ищете?

Адрес=14*10+1*2=142(Dec)=8E(Hex)

Таблица 2 – Последовательность прихода запросов на прерывание

№ варианта

Последовательность запросов IRQ

14

2,6; 7,3; 0,5; 4; 6; 4,1; 3; 0,2

Таблица 3 – Нач. адреса ППОП для i8086 Таблица 4 – Задание для режима ПО

Основная программа

№команды относительно базы

Вариант 14

IRQ

CS

IP

4

11

18

3

5

6,3

000h

000h

ППОП

0

1

2

3

4

5

6

7

3

3

4

2

1

6

3

4

386h

825h

279h

0DCh

000h

7A7h

AAAh

121h

090h

100h

120h

040h

070h

080h

050h

060h

Номер команды чтения СС ПКП

Вариант 14

№ команды поступления IRQ

6

5

9

9

11

14

13

18

18

2 Режим фиксированных приоритетов

Каскадное включение, ведомая БИС (#$):

┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐

│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │

├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤

│000│jmp 160h │ 1 ││ переход к инициализации │

инициализация

│160│mov al,b │ 1 ││icw1 (ведомая, загрузка icw4 ) │

│161│out 8eh, al │ 1 ││ │

│162│mov al,0 │ 1 ││icw2 (адрес IDT) │

│163│out 8fh, al │ 1 ││ │

│164│mov al,b │ 1 ││icw3 (№ IRQ к кот. подкл. вых. │

│165│out 8fh, al │ 1 ││ INT ведомой ) │

│166│mov al,b │ 1 ││icw4 (i86) │

│167│out 8fh, al │ 1 ││ │

│168│mov al,b │ 1 ││ocw3 (чтение ISR) │

│169│out 8eh, al │ 1 ││ │

│16A│jmp 01h │ 1 ││ │

│ │ │ │ │ │

│080│push ax │ 1 ││ППОП 5 │

│081│sti │ 1 ││ │

│082│sub al, bl │ 1 ││ │

│083│dec ax │ 1 ││ │

│084│dec ax │ 1 ││ │

│085│mov al, bl │ 1 ││* │

│086│inc bl │ 1 ││ │

│087│add al, bl │ 1 ││ │

│088│dec ax │ 1 ││ │

│089│inc ax │ 1 ││ │

│08A│dec ax │ 1 ││ │

│08B│cli │ 1 ││ │

│08C│call 140h │ 1 ││переход на проц. сброса ISR │

│08D│pop ax │ 1 ││ │

│08E│iret │ 1 ││ │

│140│mov al,b │ 1 ││ocw2 (сброс ISR в ведомой) │

│141│out 8Eh, al │ 1 ││ │

│142│in al,8Eh │ 1 ││ │

│143│cmp al,0 │ 1 ││проверка на 0 в ISR ведомой │

│144│jnz 147h │ 1 ││ │

│145│mov al,b │ 1 ││ocw2 (сброс ISR в ведущей) │

│146│out 8Ch, al │ 1 ││8С – адрес порта ведущей │

│147│ret │ 1 ││ │

└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘

Диаграмма прерываний для режима фиксированных приоритетов:

0┤ ▒▒░░ ▒▒░░

│ ││││ ││││

1┤ ││││ ▒▒░░ ││││

│ ││││ ││││ ││││

2┤ ▒▒░░ ││││ ││││ ││││▒▒░░

│ ││││ ││││ ││││ ││││││││

3┤▒▒││││░░▒▒││││░░ ││││▒▒││││││││░░ ▒▒░░

│││││││││││││││││ ││││││││││││││││ ││││

4┤││││││││││││││││▒▒░░ ││││││││││││││││▒▒░░ ││││

│││││││││││││││││││││ ││││││││││││││││││││ ││││

5┤││││││││││││││││││││▒▒││││││││││││││││││││░░ ▒▒░░││││

│││││││││││││││││││││││││││││││││││││││││││││ ││││││││

6┤││││││││││││││││││││││││││││││││││││││││││││▒▒░░ ││││││││▒▒░░

│││││││││││││││││││││││││││││││││││││││││││││││││ ││││││││││││

7┤││││││││││││││││││││││││││││││││││││││││││││││││▒▒░░││││││││││││

│││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││

└────────────────────────────────────────────────────────────────────

3 Режим спец. маскирования

Бескаскадное включение():

┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐

│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │

├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤

│000│jmp 160h │ 1 ││ переход к инициализации │

инициализация

│160│mov al,b │ 1 ││icw1 (icw4, 1 ведущая) │

│161│out 8eh, al │ 1 ││ │

│162│mov al,0 │ 1 ││icw2 (адрес IDT) │

│163│out 8fh, al │ 1 ││ │

│164│mov al,b │ 1 ││icw4 (i86, ведущий с ~EN) │

│165│out 8fh, al │ 1 ││ │

│166│mov al,b │ 1 ││ocw3 (спец. маскирование) │

│167│out 8eh, al │ 1 ││ │

│168│jmp 01h │ 1 ││ │

│ │ │ │ │ │

│100│push ax │ 1 ││ППОП 1 │

│101│push bx │ 1 ││ │

│102│sti │ 1 ││ │

│103│mov bl, ah │ 1 ││ │

│104│inc ax │ 1 ││ │

│105│dec bx │ 1 ││* │

│106│xor bx, bx │ 1 ││ │

│107│sub bx,34h │ 1 ││ │

│108│or ax, bx │ 1 ││ │

│109│dec ax │ 1 ││ │

│10A│cli │ 1 ││ │

│10B│mov al,b │ 1 ││ocw2(сброс ISR по L2-L0) │

│10C│out 8Eh, al │ 1 ││ │

│10D│pop bx │ 1 ││ │

│10E│pop ax │ 1 ││ │

│10F│iret │ 1 ││ │

└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘

Диаграмма прерываний для режима специального маскирования:

0┤ ▒▒ ░░▒▒░░

│ ││ ││││││

1┤ ││ ▒▒ ░░││││││

│ ││ ││ ││││││││

2┤ ▒▒ ││ ││ ││││││││ ░░▒▒░░

│ ││ ││ ││ ││││││││ ││││││

3┤▒▒││ ││ ││ ││││││││ ││││││░░▒▒░░ ▒▒ ░░

│││││ ││ ││ ││││││││ ││││││││││││ ││ ││

4┤││││ ││ ▒▒░░ ││▒▒░░││││││││ ││││││││││││ ││ ││

│││││ ││ ││││ ││││││││││││││ ││││││││││││ ││ ││

5┤││││ ││▒▒││││░░││││││││││││││ ││││││││││││▒▒░░││ ││

│││││ ││││││││││││││││││││││││ ││││││││││││││││││ ││

6┤││││▒▒ ││││││││││││││││││││││││ ░░▒▒░░││││││││││││││││││▒▒░░││

│││││││ ││││││││││││││││││││││││ ││││││││││││││││││││││││││││││

7┤││││││▒▒││││││││││││││││││││││││░░││││││││││││││││││││││││││││││

│││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││

└─────────────────────────────────────────────────────────────────────

4 Режим циклического сдвига по типу А

Каскадное включение: ведущая БИС с PSV (#&):

┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐

│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │

├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤

│000│jmp 160h │ 1 ││ переход к инициализации │

инициализация

│160│mov al,b │ 1 ││icw1(icw4, ведущая и ведомая) │

│161│out 8eh, al │ 1 ││ │

│162│mov al,0 │ 1 ││icw2(адрес IDT) │

│163│out 8fh, al │ 1 ││ │

│164│mov al,b │ 1 ││icw3(ведомая к 0 и 4) │

│165│out 8fh, al │ 1 ││ │

│166│mov al,b │ 1 ││icw4(ведущая с ~EN, PSV) │

│167│out 8fh, al │ 1 ││ │

│168│jmp 01h │ 1 ││ │

│ │ │ │ │ │

│ │ ППОП ВЕДОМОЙ БИС

│070│push ax │ 1 ││ППОП 4 ВЕДОМОЙ │

│071│push bx │ 1 ││ │

│072│sti │ 1 ││ │

│073│dec ax │ 1 ││* │

│074│sub ax,5h │ 1 ││ │

│075│and al, ah │ 1 ││ │

│076│mov ax, bx │ 1 ││ │

│077│xor ax, ax │ 1 ││ │

│078│mov bl, ah │ 1 ││ │

│079│dec ax │ 1 ││ │

│07A│cli │ 1 ││ │

│07B│call 140h │ 1 ││очиска ISR │

│07C│pop bx │ 1 ││ │

│07D│pop ax │ 1 ││ │

│07E│iret │ 1 ││ │

│ │ │ │ │ │

│140│mov al,b │ 1 ││ocw2 для ведомой │

│141│out 98h, al │ 1 ││ │

│142│in al,98h │ 1 ││чтение ведомой │

│143│cmp al,0 │ 1 ││ │

│144│jnz 147h │ 1 ││выход │

│145│mov al,b │ 1 ││ocw2 для ведущей │

│146│out 8eh, al │ 1 ││ │

│147│ret │ 1 ││ │

│ │ ППОП ВЕДУЩЕЙ БИС

│120│push ax │ 1 ││ППОП 2 ВЕДУЩЕЙ │

│121│in al,8fh │ 1 ││чтение маски (ocw1) │

│122│or al,b │ 1 ││маска на прерывание │

│123│out 8fh, al │ 1 ││ │

│124│sti │ 1 ││ │

│125│and al, ah │ 1 ││ │

│126│mov ax, bx │ 1 ││ │

│127│xor ax, ax │ 1 ││ │

│128│mov bl, ah │ 1 ││ │

│129│dec ax │ 1 ││ │

│12A│dec ax │ 1 ││ │

│12B│cli │ 1 ││ │

│12C│mov al,b │ 1 ││ocw2 │

│12D│out 8Eh, al │ 1 ││ │

│12E│in al,8fh │ 1 ││чтение маски │

│12F│and al,b │ 1 ││размаскирование прерывания │

│130│out 8fh, al │ 1 ││ │

│131│pop ax │ 1 ││ │

│132│iret │ 1 ││ │

└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘

Диаграмма прерываний для режима циклического сдвига по типу А

0┤ ▒▒▒▒░░

│ ││││││

1┤ ││││││▒▒░░

│ ││││││││││

2┤ ▒▒░░ ││││││││││▒▒░░

│ ││││ ││││││││││││││

3┤▒▒││││▒▒░░ ││││││││││││││▒▒░░ ▒▒░░

│││││││││││ ││││││││││││││││││ ││││

4┤││││││││││ ▒▒░░ ││││││││││││││││││▒▒░░ ││││

│││││││││││ ││││ ││││││││││││││││││││││ ││││

5┤││││││││││▒▒││││░░ ││││││││││││││││││││││▒▒░░ ││││

│││││││││││││││││││ ││││││││││││││││││││││││││ ││││

6┤││││││││││││││││││▒▒░░ ││││││││││││││││││││││││││▒▒░░││││

│││││││││││││││││││││││ ││││││││││││││││││││││││││││││││││

7┤││││││││││││││││││││││▒▒░░││││││││││││││││││││││││││││││││││

│││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││

└───────────────────────────────────────────────────────────────────

5 Режим циклического сдвига по типу B (X=2)

Бескаскадное включение ():

┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐

│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │

├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤

│000│jmp 160h │ 1 ││ переход к инициализации │

инициализация

│160│mov al,b │ 1 ││icw1(icw4, 1 ведущая) │

│161│out 8eh, al │ 1 ││ │

│162│mov al,0 │ 1 ││icw2(адрес IDT) │

│163│out 8fh, al │ 1 ││ │

│164│mov al,b │ 1 ││icw4(i86) │

│165│out 8fh, al │ 1 ││ │

│166│jmp 01h │ 1 ││ │

│ │ │ │ │ │

│120│push ax │ 1 ││ППОП 2 │

│121│push bx │ 1 ││ │

│122│sti │ 1 ││ │

│123│dec ax │ 1 ││ │

│124│xor bx, bx │ 1 ││ │

│125│sub ax,6h │ 1 ││ │

│126│or ax, bx │ 1 ││ │

│127│add bx, ax │ 1 ││ │

│128│dec ax │ 1 ││ │

│129│cli │ 1 ││ │

│12A│mov al,b │ 1 ││ocw2(тип B №ППОП+2) │

│12B│out 8Eh, al │ 1 ││ │

│12C│pop bx │ 1 ││ │

│12D│pop ax │ 1 ││ │

│12E│iret │ 1 ││ │

└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘

Диаграмма прерываний для режима циклического сдвига по типу B

0┤ ▒▒░░ ▒▒░░

│ ││││ ││││

1┤ ││││ ▒▒░░ ││││

│ ││││ ││││ ││││

2┤ ▒▒░░ ││││ ││││ ▒▒░░ ││││

│ ││││ ││││ ││││ ││││ ││││

3┤▒▒││││ ││││░░▒▒││││ ││││ ░░││││▒▒░░ ▒▒░░

│││││││ ││││││││││││ ││││ ││││││││││ ││││

4┤││││││ ││││││││││││▒▒░░ ││││ ││││││││││ ││││

│││││││ ││││││││││││││││ ││││ ││││││││││ ││││

5┤││││││ ▒▒░░││││││││││││││││ ││││ ││││││││││▒▒░░││││

│││││││ ││││││││││││││││││││ ││││ ││││││││││││││││││

6┤││││││▒▒││││││││││││││││││││ ││││░░▒▒░░││││││││││││││││││▒▒░░

│││││││││││││││││││││││││││││ ││││││││││││││││││││││││││││││││

7┤││││││││││││││││││││││││││││▒▒░░││││││││││││││││││││││││││││││││

│││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││

└──────────────────────────────────────────────────────────────────────

6 Режим программного опроса

Процессор i8080 с шагом 8 (8*):

┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐

│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │

├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤

│000│jmp 160h │ 1 ││ переход к инициализации │

инициализация

│160│cli │ 1 ││ │

│161│mov al,b │ 1 ││icw1(i80 с щагом 8, 1 БИС) │

│162│out 8eh, al │ 1 ││ │

│163│mov al,0 │ 1 ││icw2 │

│164│out 8fh, al │ 1 ││ │

│165│jmp 01h │ 1 ││ │

│ │ полпрограмма чтения СС и формирования адреса ППОП

│020│push ax │ 1 ││ │

│021│push bx │ 1 ││ │

│022│mov al,b │ 1 ││ocw3(прогр. опрос) │

│023│out 8eh, al │ 1 ││ │

│024│in al,8eh │ 1 ││Чтение СС ПКП │

│025│mov bl, al │ 1 ││ │

│026│and al,b │ 1 ││проверка на прерывание │

│027│jz 30h │ 1 ││если нет прерыв.,то конец │

│028│mov al, bl │ 1 ││ │

│029│and al,b │ 1 ││выделение вектора │

│02A│shl al,3 │ 1 ││получ. адреса в ПМ │

│02B│mov bl, al │ 1 ││ │

│02C│mov ax,[bl] │ 1 ││получение адреса ППОП │

│02D│call ax │ 1 ││переход к ППОП │

│02E│mov al,b │ 1 ││ocw2 (сброс ISR) │

│02F│out 8eh, al │ 1 ││ │

│030│pop bx │ 1 ││ │

│031│pop ax │ 1 ││ │

│032│ret │ 1 ││ │

│ │ ППОП2

│120│push ax │ 1 ││ППОП 2 │

│121│push bx │ 1 ││ │

│122│dec ax │ 1 ││ │

│123│inc bx │ 1 ││ │

│124│dec ax │ 1 ││ │

│125│mov bx, ax │ 1 ││ │

│126│xor ax, ax │ 1 ││ │

│127│sub bx,8h │ 1 ││ │

│128│add ax, bx │ 1 ││ │

│129│or bh, al │ 1 ││ │

│12A│inc ax │ 1 ││ │

│12B│dec ax │ 1 ││ │

│12C│pop bx │ 1 ││ │

│12D│pop ax │ 1 ││ │

│12E│ret │ 1 ││ │

└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘

Диаграмма прерываний для режима программного опроса

0┤ ▒▒░░

│ ││││

1┤ ││││

│ ││││

2┤▒▒░░ ││││

│││││ ││││

3┤││││▒▒░░ ││││

│││││││││ ││││

4┤││││││││ ││││▒▒░░

│││││││││ ││││││││

5┤││││││││ ││││││││

│││││││││ ││││││││

6┤││││││││▒▒░░││││││││

│││││││││││││││││││││

7┤││││││││││││││││││││

│││││││││││││││││││││

└──────────────────────────

№ прерывания

Адрес ППОП

0

90

1

100

2

120

3

40

4

70

5

80

6

50

7

60