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


