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

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

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

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

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

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

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

Отчет

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

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

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

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

Киров 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 – Нач. адреса ППОП

Задание

Вариант 5

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

i8080, шаг 4

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

Ведомая

3 сдвиг А

4 сдвиг B

Ведущая с PSV

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

X для типа B

4

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

6, 3

№ ко -

Вариант 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

BF9h

425h

512h

630h

846h

FFFh

058h

777h

050h

090h

110h

120h

100h

080h

070h

060h

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

№ варианта

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

Вариант 4

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

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

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

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

чтения СС ПКП

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

4

5

9

12

9

14

14

Базовый адрес ПКП равен 5*10+1*2=5210=34h.

1.1  Режим фиксированных приоритетов для процессора i8080, шаг 4

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

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

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

│000│call 20h │ 1 ││ПП Инициализации │

│001│mov ax, 20 │ 1 ││Основная программа!!! │

│002│dec ax │ 1 ││ │

│003│dec ax │ 1 ││IRQ5 │

│004│dec ax │ 1 ││ │

│005│dec ax │ 1 ││ │

│006│dec ax │ 1 ││ │

│007│dec ax │ 1 ││ │

│008│dec ax │ 1 ││ │

│009│dec ax │ 1 ││ │

│00A│dec ax │ 1 ││IRQ7, IRQ4 │

│00B│dec ax │ 1 ││ │

│00C│dec ax │ 1 ││ │

│00D│dec ax │ 1 ││ │

│00E│dec ax │ 1 ││ │

│00F│dec ax │ 1 ││ │

│010│dec ax │ 1 ││ │

│011│dec ax │ 1 ││IRQ1 │

│012│dec ax │ 1 ││ │

│013│nop │ 1 ││ │

│014│ │ │ │

│020│mov al, b │ 1 ││ПП инициализации │

│021│out 34h, al │ 1 ││Загрузка ICW1 │

│022│mov al, b │ 1 ││ │

│023│out 35h, al │ 1 ││Загрузка ICW2 │

│024│mov al, b │ 1 ││ │

│025│out 35h, al │ 1 ││Загрузка ICW3 │

│026│mov al, b │ 1 ││ │

│027│out 35h, al │ 1 ││Загрузка ICW4 │

│028│ret │ 1 ││

│050│push ax │ 1 ││ППОП №0 , сохранение ax │

│051│sti │ 1 ││Разрешаем прерывания │

│052│inc ax │ 1 ││Тело обработчика │

│053│inc ax │ 1 ││ │

│054│inc ax │ 1 ││ │

│055│inc ax │ 1 ││ │

│056│inc ax │ 1 ││ │

│057│mov al,b │ 1 ││Cброс бита в ISR │

│058│out 34h, al │ 1 ││Загрузка OCW2 │

│059│pop ax │ 1 ││Извлекаем ax │

│05A│ret │ 1 ││

│060│push ax │ 1 ││ППОП №7 , сохранение ax │

│061│sti │ 1 ││Разрешаем прерывания │

│062│inc ax │ 1 ││Тело обработчика │

│063│inc ax │ 1 ││ │

│064│inc ax │ 1 ││ │

│065│inc ax │ 1 ││ │

│066│inc ax │ 1 ││ │

│067│mov al,b │ 1 ││Cброс бита в ISR │

│068│out 34h, al │ 1 ││Загрузка OCW2 │

│069│pop ax │ 1 ││Извлекаем ax │

│06A│ret │ 1 ││

│070│push ax │ 1 ││ППОП №6 , сохранение ax │

│071│sti │ 1 ││Разрешаем прерывания │

│072│inc ax │ 1 ││Тело обработчика │

│073│inc ax │ 1 ││ │

│074│inc ax │ 1 ││ │

│075│inc ax │ 1 ││ │

│076│inc ax │ 1 ││ │

│077│mov al,b │ 1 ││Cброс бита в ISR │

│078│out 34h, al │ 1 ││Загрузка OCW2 │

│079│pop ax │ 1 ││Извлекаем ax │

│07A│ret │ 1 ││

│080│push ax │ 1 ││ППОП №5 , сохранение ax │

│081│sti │ 1 ││Разрешаем прерывания │

│082│inc ax │ 1 ││Тело обработчика │

│083│inc ax │ 1 ││ │

│084│inc ax │ 1 ││ │

│085│inc ax │ 1 ││ │

│086│inc ax │ 1 ││ │

│087│inc ax │ 1 ││ │

│088│mov al,b │ 0 ││Cброс бита в ISR │

│089│out 34h, al │ 1 ││Загрузка OCW2 │

│08A│pop ax │ 1 ││Извлекаем ax │

│08B│ret │ 1 ││

Таблица переходов на ППОП

│0C0│jmp 50h │ 1 ││Переход на ППОП №0 │

│0C1│ │ │ │ │

│0C2│ │ │ │ │

│0C3│ │ │ │ │

│0C4│jmp 90h │ 1 ││Переход на ППОП №1 │

│0C5│ │ │ │ │

│0C6│ │ │ │ │

│0C7│ │ │ │ │

│0C8│jmp 110h │ 1 ││Переход на ППОП №2 │

│0C9│ │ │ │ │

│0CA│ │ │ │ │

│0CB│ │ │ │ │

│0CC│jmp 120h │ 1 ││Переход на ППОП №3 │

│0CD│ │ │ │ │

│0CE│ │ │ │ │

│0CF│ │ │ │ │

│0D0│jmp 100h │ 1 ││Переход на ППОП №4 │

│0D1│ │ │ │ │

│0D2│ │ │ │ │

│0D3│ │ │ │ │

│0D4│jmp 80h │ 1 ││Переход на ППОП №5 │

│0D5│ │ │ │ │

│0D6│ │ │ │ │

│0D7│ │ │ │ │

│0D8│jmp 70h │ 1 ││Переход на ППОП №6 │

│0D9│ │ │ │ │

│0DA│ │ │ │ │

│0DB│ │ │ │ │

│0DC│jmp 60h │ 1 ││Переход на ППОП №7

│090│push ax │ 1 ││ППОП №1 , сохранение ax │

│091│sti │ 1 ││Разрешаем прерывания │

│092│inc ax │ 1 ││Тело обработчика │

│093│inc ax │ 1 ││ │

│094│inc ax │ 1 ││ │

│095│inc ax │ 1 ││ │

│096│inc ax │ 1 ││ │

│097│inc ax │ 1 ││ │

│098│mov al,b │ 1 ││Cброс бита в ISR │

│099│out 34h, al │ 1 ││Загрузка OCW2 │

│09A│pop ax │ 1 ││Извлекаем ax │

│09B│ret │ 1 ││

│100│push ax │ 1 ││ППОП №4 , сохранение ax │

│101│sti │ 1 ││Разрешаем прерывания │

│102│inc ax │ 1 ││Тело обработчика │

│103│inc ax │ 1 ││ │

│104│inc ax │ 1 ││ │

│105│inc ax │ 1 ││ │

│106│inc ax │ 1 ││ │

│107│mov al,b │ 1 ││Cброс бита в ISR │

│108│out 34h, al │ 1 ││Загрузка OCW2 │

│109│pop ax │ 1 ││Извлекаем ax │

│10A│ret │ 1 ││

│110│push ax │ 1 ││ППОП №2 , сохранение ax │

│111│sti │ 1 ││Разрешаем прерывания │

│112│inc ax │ 1 ││Тело обработчика │

│113│inc ax │ 1 ││ │

│114│inc ax │ 1 ││ │

│115│inc ax │ 1 ││ │

│116│inc ax │ 1 ││ │

│117│mov al,b │ 1 ││Cброс бита в ISR │

│118│out 34h, al │ 1 ││Загрузка OCW2 │

│119│pop ax │ 1 ││Извлекаем ax │

│11A│ret │ 1 ││

│120│push ax │ 1 ││ППОП №3 , сохранение ax │

│121│sti │ 1 ││Разрешаем прерывания │

│122│inc ax │ 1 ││Тело обработчика │

│123│inc ax │ 1 ││ │

│124│inc ax │ 1 ││ │

│125│inc ax │ 1 ││ │

│126│inc ax │ 1 ││ │

│127│mov al,b │ 1 ││Cброс бита в ISR │

│128│out 34h, al │ 1 ││Загрузка OCW2 │

│129│pop ax │ 1 ││Извлекаем ax │

│12A│ret │ 1 ││

Рисунок – График вложенности

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 ││ │

│00C│nop │ 1 ││ │

│00D│nop │ 1 ││* │

│00E│nop │ 1 ││ │

│00F│ │ │ │ │

│...

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

│020│mov al,b │ 1 ││UP=0, S=1, 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 ││PSV=0 | AEOI=0 | i8086 │

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

│026│mov al,b │ 1 ││ │

│027│out 2Ch, al │ 1 ││Загрузка OCW3 │

│028│ret │ 1 ││ │

│029│ │ │ │ │

│...

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

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

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

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

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

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

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

│046│mov al,b │ 1 ││SEOI | clear ISR │

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

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

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

│04A│ │ │ │ │

│...

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

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

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

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

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

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

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

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

│057│mov al,b │ 1 ││SEOI | 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│nop │ 1 ││обработчик │

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

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

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

│066│mov al,b │ 1 ││SEOI | 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,b │ 1 ││SEOI | clear ISR │

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

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

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

│07A│ │ │ │ │

│...

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

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

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

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

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

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

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

│086│mov al,b │ 1 ││SEOI | 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│nop │ 1 ││обработчик │

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

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

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

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

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

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

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

│09A│ │ │ │ │

│...

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

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

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

│102│nop │ 1 ││// │

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

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

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

│106│mov al,b │ 1 ││SEOI | clear ISR │

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

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

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

│10A│ │ │ │ │

│...

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

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

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