ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
высшего профессионального образования
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет автоматики и вычислительной техники
Кафедра электронных вычислительных машин
Обработка прерываний на основе БВПП 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 |


