ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение

высшего профессионального образования

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

Факультет автоматики и вычислительной техники

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

Обработка прерываний на основе БВПП K1810ВН59A

Отчет

Лабораторная работа №2 по дисциплине

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

Выполнил студент группы ВМ-42 ______________//

Проверил преподаватель кафедры ЭВМ____________//

Киров 2007

Цель работы

Целью лабораторной работы является изучение:

- принципов организации системы прерываний на командном уровне на основе МПК К1810 и К580 для программируемого контроллера прерываний (ПКП) K1810ВН59А;

- программирования ПКП на различные режимы работы;

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

1 Задание на лабораторные исследования

В ходе лабораторной работы необходимо:

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

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

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

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

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

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

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

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

4) циклического сдвига с использованием OCW2 формата RSE по типу В

(L2-L0 = №ППОП + X);

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

Таблица 1.1 – Вариант задания режимов Таблица 1.2 – Нач. адреса ППОП

Задание

Вариант 4

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

Ведущая с PSV

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

3 сдвиг А

Ведомая

i8080, шаг 4

4 сдвиг B

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

X для типа B

2

Ведомые на входы IRQ ведущей:

0, 7

№ ко -

Вариант 4

Основ-

манды

IRQ

CS

IP

ная прог-рамма

5

10

13

0

3

4, 2

000h

000h

ППОП

0

1

2

3

4

5

6

7

3

4

2

5

4

6

4

5

486h

325h

279h

1DCh

300h

8A7h

BAAh

421h

100h

110h

040h

080h

060h

050h

090h

070h

Таблица 1.3 - Последовательность запросов IRQ

№ варианта

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

Вариант 4

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

Таблица 1.4 – Задание для режима прогр. опроса

Номер команды

Номер команды

чтения СС ПКП

поступления IRQ

4

5

9

8

12

14

13

19

18

Базовый адрес ПКП равен 4*10+2*2=4410=2Ch.

1.1  Режим фиксированных приоритетов для ведущей БИС с PSV=1 для

процессора i8086 (ведомые на IRQ0 и IRQ7)

Листинг программы

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

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

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

│000│call 20h │ 1 ││Адс порта 2С │

│001│nop │ 1 ││ФИКС ВЕДУЩАЯ с PSV │

│002│nop │ 1 ││ │

│003│nop │ 1 ││ │

│004│nop │ 1 ││ │

│005│nop │ 1 ││* │

│006│nop │ 1 ││ │

│007│nop │ 1 ││ │

│008│nop │ 1 ││ │

│009│nop │ 1 ││ │

│00A│nop │ 1 ││* │

│00B│nop │ 1 ││ │

│00C│nop │ 1 ││ │

│00D│nop │ 1 ││* │

│00E│nop │ 1 ││ │

│00F│ │ │ │ │

│...

│01F│ │ │ │ПП инициализации │

│020│mov al,b │ 1 ││UP=0, S=0, ICW4=1 │

│021│out 2Ch, al │ 1 ││Загрузка ICW1 │

│022│mov al,00h │ 1 ││Адрес IDT 00h │

│023│out 2Dh, al │ 1 ││Загрузка ICW2 │

│024│mov al,b │ 1 ││Ведомые на 0,7 │

│025│out 2Dh, al │ 1 ││Загрузка ICW3 │

│026│mov al,b │ 1 ││PSV=1 | ведущ | i8086 │

│027│out 2Dh, al │ 1 ││Загрузка ICW4 │

│028│mov al,b │ 1 ││OCW3 для чтения ISR │

│029│out 2Ch, al │ 1 ││ │

│02A│ret │ 1 ││ │

│02B│ │ │ │ │

│...

│03F│ │ │ │ППОП 2 │

│040│sti │ 1 ││разрешить прерывания │

│041│push ax │ 1 ││сохранение AL │

│042│call A0h │ 1 ││маскирование │

│043│nop │ 1 ││обработчик │

│044│nop │ 1 ││обработчик │

│045│nop │ 1 ││обработчик │

│046│cli │ 1 ││запрет прерываний │

│047│mov al,b │ 1 ││EOI | clear ISR │

│048│out 2Ch, al │ 1 ││загрузка OCW2 │

│049│pop ax │ 1 ││восстановление AL │

│04A│iret │ 1 ││возврат │

│04B│ │ │ │ │

│...

│04F│ │ │ │ППОП 5 │

│050│sti │ 1 ││разрешить прерывания │

│051│push ax │ 1 ││сохранение AL │

│052│call A0h │ 1 ││маскирование │

│053│nop │ 1 ││обработчик │

│054│nop │ 1 ││обработчик │

│055│nop │ 1 ││обработчик / │

│056│cli │ 1 ││запрет прерываний │

│057│mov al,b │ 1 ││EOI | clear ISR │

│058│out 2Ch, al │ 1 ││загрузка OCW2 │

│059│pop ax │ 1 ││восстановление AL │

│05A│iret │ 1 ││возврат │

│05B│ │ │ │ │

│05F│ │ │ │ППОП 4 │

│060│sti │ 1 ││разрешить прерывания │

│061│push ax │ 1 ││сохранение AL │

│062│call A0h │ 1 ││маскирование │

│063│nop │ 1 ││обработчик / │

│064│nop │ 1 ││обработчик │

│065│cli │ 1 ││запрет прерываний │

│066│mov al,b │ 1 ││EOI | clear ISR │

│067│out 2Ch, al │ 1 ││загрузка OCW2 │

│068│pop ax │ 1 ││восстановление AL │

│069│iret │ 1 ││возврат │

│06A│ │ │ │ │

│...

│06F│ │ │ │ППОП 7 │

│070│sti │ 1 ││разрешить прерывания │

│071│push ax │ 1 ││сохранение AL │

│072│nop │ 1 ││ │

│073│nop │ 1 ││ │

│074│nop │ 1 ││вектор │

│075│cli │ 1 ││запрет прерываний │

│076│mov al, A0h │ 1 ││ │

│077│out 3Ch, al │ 1 ││загрузка OSW2_влож │

│078│in al,3Ch │ 1 ││ │

│079│or al, al │ 1 ││ │

│07A│jnz 7Dh │ 1 ││ │

│07B│mov al,20h │ 1 ││ │

│07C│out 2Ch, al │ 1 ││ │

│07D│pop ax │ 1 ││восстановление AL │

│07E│iret │ 1 ││возврат │

│07F│ │ │ │ППОП 3 │

│080│sti │ 1 ││разрешить прерывания │

│081│push ax │ 1 ││сохранение AL │

│082│call A0h │ 1 ││маскирование │

│083│nop │ 1 ││обработчик │

│084│nop │ 1 ││обработчик / │

│085│cli │ 1 ││запрет прерываний │

│086│mov al,b │ 1 ││EOI | clear ISR │

│087│out 2Ch, al │ 1 ││загрузка OCW2 │

│088│pop ax │ 1 ││восстановление AL │

│089│iret │ 1 ││возврат │

│08A│ │ │ │ │

│...

│08F│ │ │ │ППОП 6 │

│090│sti │ 1 ││разрешить прерывания │

│091│push ax │ 1 ││сохранение AL │

│092│call A0h │ 1 ││маскирование │

│093│nop │ 1 ││обработчик │

│094│nop │ 1 ││обработчик │

│095│cli │ 1 ││запрет прерываний │

│096│mov al,b │ 1 ││EOI | clear ISR │

│097│out 2Ch, al │ 1 ││загрузка OCW2 │

│098│pop ax │ 1 ││восстановление AL │

│099│iret │ 1 ││возврат │

│09A│ │ │ │ │

│...

│09F│ │ │ │Маскирование │

│0A0│in al,2Ch │ 1 ││ │

│0A1│and al,b │ 1 ││ │

│0A2│xor ah, ah │ 1 ││ │

│0A3│out 2Dh, al │ 1 ││ │

│0A4│ret │ 1 ││ │

│0A5│ │ │ │ │

│...

│0A9│ │ │ │Размаскирование │

│0AA│in al,2Ch │ 1 ││ │

│0AB│and al,b │ 1 ││ │

│0AC│xor ah, ah │ 1 ││ │

│0AD│out 2Dh, al │ 1 ││ │

│0AE│ret │ 1 ││ │

│0AF│ │ │ │ │

│...

│0FF│ │ │ │ППОП 0 │

│100│sti │ 1 ││разрешить прерывания │

│101│push ax │ 1 ││сохранение AL │

│102│nop │ 1 ││// │

│103│cli │ 1 ││запрет прерываний │

│104│mov al, A0h │ 1 ││ │

│105│out 2Eh, al │ 1 ││загрузка OSW2_влож │

│106│in al,2Eh │ 1 ││ │

│107│or al, al │ 1 ││ │

│108│jnz 10Bh │ 1 ││ │

│109│mov al,20h │ 1 ││ │

│10A│out 2Ch, al │ 1 ││ │

│10B│pop ax │ 1 ││восстановление AL │

│10C│iret │ 1 ││возврат │

│10D│ │ │ │ │

│10E│ │ │ │ │

│10F│ │ │ │ППОП 1 │

│110│sti │ 1 ││разрешить прерывания │

│111│push ax │ 1 ││сохранение AL │

│112│call A0h │ 1 ││маскирование │

│113│nop │ 1 ││обработчик / │

│114│nop │ 1 ││обработчик │

│115│cli │ 1 ││запрет прерываний │

│116│mov al,b │ 1 ││EOI | clear ISR │

│117│out 2Ch, al │ 1 ││загрузка OCW2 │

│118│call AAh │ 1 ││размаскирование │

│119│pop ax │ 1 ││восстановление AL │

│11A│iret │ 1 ││возврат │

│11B│ │ │ │ │

│...

│1FF│ │ │ │ │

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

Диаграмма прерываний

────────────────────────────────────────────────────────────────────────────────

0┤▒▒░░ ▒▒░░ ▒▒░░

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

└─────────────────────────────────────────────────────────────────────────────
1.2 Режим спецмаскирования для процессора i8086

Листинг программы

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

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

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

│000│call 20h │ 1 ││Адс порта 2С │

│001│nop │ 1 ││Спецмаскирование │

│002│nop │ 1 ││ │

│003│nop │ 1 ││ │

│004│nop │ 1 ││ │

│005│nop │ 1 ││* │

│006│nop │ 1 ││ │

│007│nop │ 1 ││ │

│008│nop │ 1 ││ │

│009│nop │ 1 ││ │

│00A│nop │ 1 ││* │

│00B│nop │ 1 ││ │

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3