close

Вход

Забыли?

вход по аккаунту

?

Лаб2 МПС

код для вставкиСкачать
 ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего профессионального образования
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет автоматики и вычислительной техники
Кафедра "Электронные вычислительные машины"
ОБРАБОТКА ПРЕРЫВАНИЙ НА ОСНОВЕ БВПП К1810ВН59А
Отчет
Лабораторная работа №2 по дисциплине
"Микропроцессорные системы"
Вариант 12
Выполнил студент группы ВМ-41 _____________ /Плосконосов В.В./
Проверил преподаватель _______________________ /Томчук М.Н./
Киров 2007
Целью лабораторной работы является изучение:
- принципов организации системы прерываний на командном уровне на основе МПК К1810 и К580 для программируемого контроллера прерываний (ПКП) K1810ВН59А;
- программирования ПКП на различные режимы работы;
- дисциплин обслуживания запросов на прерывание для заданной последовательности поступающих запросов IRQ от внешних источников прерываний.
Задание на лабораторную работу:
- разработать программу инициализации ПКП для режимов фиксированных приоритетов, спецмаскирования и программного опроса;
- разработать текст пользовательской программы, во время выполнения которой приходят запросы на прерывание IRQ;
- разработать также тексты подпрограмм обработки прерываний, во время выполнения которых также могут приходить запросы IRQ;
- выполнить исследования принципов обслуживания запросов для следующих дисциплин обслуживания прерываний:
1) фиксированных приоритетов;
2) специального маскирования;
3) циклического сдвига с использованием OCW2 формата RE по типу А;
4) циклического сдвига с использованием OCW2 формата RSE по типу В (L2-L0 = №ППОП + X);
5) программного опроса.
Таблица 1 - Вариант задания режимов ЗаданиеВариант 121 фиксированные приоритетыВедущая БИС с PSV2 спецмаскированиеВедомая БИС, i8080, шаг 43 сдвиг типа А4 сдвиг типа B5 программный опросX для типа B3Ведомые на входы IRQ ведущей:3, 7
Таблица 2 - Начальные адреса ППОП
№ команды относительно базыВариант 12Основная программаIRQCSIP2
9
163
1
5, 4000h000hППОП
0
1
2
3
4
5
6
7
4
5
6
5
4
6
3
4
A45h
444h
98Eh
B99h
C30h
138h
429h
811h
120h
040h
050h
060h
070h
080h
090h
100h
Таблица 3 - Последовательность запросов IRQ
№ вариантаПоследовательность запросов IRQВариант 174,7; 7,2; 3,5; 3; 6; 2,1; 3; 0,3
Таблица 4 - Задание для режима программного опроса
Номер команды
чтения СС ПКПНомер команды
поступления IRQ62981110141816
Базовый адрес ПКП равен 12*10+1*2=12210=7A16.
Выполнение лабораторной работы
1 Режим фиксированных приоритетов, ведущая БИС с PSV
Основная программа и подпрограмма инициализации ПКП представлены ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│call 20h │ 1 │00000000│ПП инициализации ПКП │
│001│mov ax, 20 │ 1 │00000000│Основная программа │
│002│dec ax │ 1 │00001000│IRQ3 │
│003│dec ax │ 1 │00000000│ │
│004│dec ax │ 1 │00000000│ │
│005│dec ax │ 1 │00000000│ │
│006│dec ax │ 1 │00000000│ │
│007│dec ax │ 1 │00000000│ │
│008│dec ax │ 1 │00000000│ │
│009│dec ax │ 1 │00000010│IRQ1 │
│00A│dec ax │ 1 │00000000│ │
│00B│dec ax │ 1 │00000000│ │
│00C│dec ax │ 1 │00000000│ │
│00D│dec ax │ 1 │00000000│ │
│00E│dec ax │ 1 │00000000│ │
│00F│dec ax │ 1 │00000000│ │
│010│dec ax │ 1 │00110000│IRQ4, IRQ5 │
│011│nop │ 1 │00000000│ │
│012│nop │ 1 │00000000│останов │
│---│------------------------------│-----│--------│------------------------------│
│020│mov al, 00010001b │ 1 │00000000│каскад; загр ICW4 │
│021│out 7Ah, al │ 1 │00000000│загрузка ICW1 │
│022│mov al, 0 │ 1 │00000000│адрес IDT │
│023│out 7Bh, al │ 1 │00000000│загрузка ICW2 │
│024│mov al, 10001000b │ 1 │00000000│ведомые на 3, 7 │
│025│out 7Bh, al │ 1 │00000000│загрузка ICW3 │
│026│mov al, 00011101b │ 1 │00000000│PSV=1;AEOI=0;BM86 │
│027│out 7Bh, al │ 1 │00000000│загрузка ICW4 │
│028│ret │ 1 │00000000│возврат │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП0 и ППОП3 представлены ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│120│push ax │ 1 │00000000│ППОП0; сохранение ax │
│121│in al, 7Bh │ 1 │00000000│чтение маски │
│122│or al, 00000001b │ 1 │00000000│маскирование разряда 0 │
│123│out 7Bh, al │ 1 │00000000│*запись маски │
│124│sti │ 1 │00000000│разрешение прерываний │
│125│inc ax │ 1 │00000000│обработка прерывания │
│126│inc ax │ 1 │00000000│ │
│127│cli │ 1 │00000000│запрет прерываний │
│128│in al, 7Bh │ 1 │00000000│чтение маски │
│129│and al, 11111110b │ 1 │00000000│размаскирование разряда 0 │
│12A│out 7Bh, al │ 1 │00000000│запись маски │
│12B│mov al, 00100000b │ 1 │00000000│EOI; сброс ISR │
│12C│out 7Ah, al │ 1 │00000000│загрузка OCW2 │
│12D│sti │ 1 │00000000│разрешение прерываний │
│12E│pop ax │ 1 │00000000│восстановление ax │
│12F│iret │ 1 │00000000│возврат из ППОП0 │
│---│------------------------------│-----│--------│------------------------------│
│060│push ax │ 1 │00000000│ППОП3;сохранение ax │
│061│sti │ 1 │00000000│разрешение прерываний │
│062│inc ax │ 1 │00000000│обработка прерывания │
│063│inc ax │ 1 │00000000│ │
│064│inc ax │ 1 │00000000│* │
│065│cli │ 1 │00000000│запрет прерываний │
│066│call 140h │ 1 │00000000│ПП завершения ППОП3 │
│067│pop ax │ 1 │00000000│восстановление ax │
│068│iret │ 1 │00000000│возврат из ППОП3 │
│---│------------------------------│-----│--------│------------------------------│
│140│mov al, 00100000b │ 1 │00000000│OCW2 для 3 ведомой │
│141│out 82h, al │ 1 │00000000│загрузка OCW2 для 3 ведомой │
│142│in al, 82h │ 1 │00000000│чтение ISR 3 ведомой │
│143│cmp al, 0 │ 1 │00000000│? ISR=0 │
│144│jnz 147h │ 1 │00000000│если <>0 │
│145│mov al, 00100000b │ 1 │00000000│OCW2 для ведущей │
│146│out 7Ah, al │ 1 │00000000│загрузка OCW2 для ведущей │
│147│ret │ 1 │00000000│возврат из ПП │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП1, ППОП2, ППОП4 - ППОП6 аналогичны ППОП0 (маскирование соответствующего разряда), ППОП7 аналогична ППОП3 только считывается по адресу 8Ah и анализируется содержимое ISR 7 ведомой БИС. Диаграмма прерываний показана на рисунке 1.
Рисунок 1 - Диаграмма прерываний для задания 1
2 Режим специального маскирования, ведомая БИС, i8080, шаг 4
Основная программа и подпрограмма инициализации ПКП представлены ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│call 20h │ 1 │00000000│ПП инициализации ПКП │
│001│mov ax, 20 │ 1 │00000000│Основная программа │
│002│dec ax │ 1 │00001000│IRQ3 │
│003│dec ax │ 1 │00000000│ │
│004│dec ax │ 1 │00000000│ │
│005│dec ax │ 1 │00000000│ │
│006│dec ax │ 1 │00000000│ │
│007│dec ax │ 1 │00000000│ │
│008│dec ax │ 1 │00000000│ │
│009│dec ax │ 1 │00000010│IRQ1 │
│00A│dec ax │ 1 │00000000│ │
│00B│dec ax │ 1 │00000000│ │
│00C│dec ax │ 1 │00000000│ │
│00D│dec ax │ 1 │00000000│ │
│00E│dec ax │ 1 │00000000│ │
│00F│dec ax │ 1 │00000000│ │
│010│dec ax │ 1 │00110000│IRQ4, IRQ5 │
│011│nop │ 1 │00000000│ │
│012│nop │ 1 │00000000│останов │
│---│------------------------------│-----│--------│------------------------------│
│020│mov al, 11010101b │ 1 │00000000│шаг=4;каскад; загр ICW4 │
│021│out 7Ah, al │ 1 │00000000│загрузка ICW1 │
│022│mov al, 0 │ 1 │00000000│старший байт адреса ППОП │
│023│out 7Bh, al │ 1 │00000000│загрузка ICW2 │
│024│mov al, 00000011b │ 1 │00000000│ведомая на IRQ3 │
│025│out 7Bh, al │ 1 │00000000│загрузка ICW3 │
│026│mov al, 0 │ 1 │00000000│ведомая БИС;BM80 │
│027│out 7Bh, al │ 1 │00000000│загрузка ICW4 │
│028│mov al, 01101011b │ 1 │00000000│спецмаскирование;чтение ISR │
│029│out 7Ah, al │ 1 │00000000│загрузка OCW3 │
│02A│ret │ 1 │00000000│возврат │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
Таблица начальных адресов ППОП представлена ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│0C0│jmp 0120h │ 1 │00000000│переход на ППОП0 │
│---│------------------------------│-----│--------│------------------------------│
│0C4│jmp 0040h │ 1 │00000000│переход на ППОП1 │
│---│------------------------------│-----│--------│------------------------------│
│0C8│jmp 0050h │ 1 │00000000│переход на ППОП2 │
│---│------------------------------│-----│--------│------------------------------│
│0CC│jmp 0060h │ 1 │00000000│переход на ППОП3 │
│---│------------------------------│-----│--------│------------------------------│
│0D0│jmp 0070h │ 1 │00000000│переход на ППОП4 │
│---│------------------------------│-----│--------│------------------------------│
│0D4│jmp 0080h │ 1 │00000000│переход на ППОП5 │
│---│------------------------------│-----│--------│------------------------------│
│0D8│jmp 0090h │ 1 │00000000│переход на ППОП6 │
│---│------------------------------│-----│--------│------------------------------│
│0DC│jmp 0100h │ 1 │00000000│переход на ППОП7 │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП0 представлена ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│11F│ │ │ │ППОП0 │
│120│sti │ 1 │00000000│разрешение прерываний │
│121│push ax │ 1 │00000000│сохранение ax │
│122│inc ax │ 1 │00000000│обработка │
│123│inc ax │ 1 │00000000│* │
│124│inc ax │ 1 │00000000│ │
│125│inc ax │ 1 │00000000│ │
│126│mov al, 01100000b │ 1 │00000000│SEOI=1; сброс ISR0 │
│127│out 7Ah, al │ 1 │00000000│загрузка OCW2 для ведомой │
│128│in al, 7Ah │ 1 │00000000│чтение ISR ведомой │
│129│cmp al, 0 │ 1 │00000000│? ISR=0 │
│12A│jnz 12Dh │ 1 │00000000│если ISR<>0 │
│12B│mov al, 00100000b │ 1 │00000000│OCW2 для ведущей │
│12C│out 72h, al │ 1 │00000000│загрузка OCW2 для ведущей │
│12D│pop ax │ 1 │00000000│восстановление ax │
│12E│ret │ 1 │00000000│возврат из ППОП0 │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП1-ППОП7 аналогичны: сброс соответствующего разряда регистра ISR в ведомой БИС и, если это необходимо, загрузка OCW2 по адресу 72h в ведущую БИС. Диаграмма прерываний показана на рисунке 2.
Рисунок 2 - Диаграмма прерываний для задания 2
3 Режим циклического сдвига приоритетов по типу А
Основная программа и подпрограмма инициализации ПКП представлены ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│call 20h │ 1 │00000000│ПП инициализации ПКП │
│001│mov ax, 20 │ 1 │00000000│Основная программа │
│002│dec ax │ 1 │00001000│IRQ3 │
│003│dec ax │ 1 │00000000│ │
│004│dec ax │ 1 │00000000│ │
│005│dec ax │ 1 │00000000│ │
│006│dec ax │ 1 │00000000│ │
│007│dec ax │ 1 │00000000│ │
│008│dec ax │ 1 │00000000│ │
│009│dec ax │ 1 │00000010│IRQ1 │
│00A│dec ax │ 1 │00000000│ │
│00B│dec ax │ 1 │00000000│ │
│00C│dec ax │ 1 │00000000│ │
│00D│dec ax │ 1 │00000000│ │
│00E│dec ax │ 1 │00000000│ │
│00F│dec ax │ 1 │00000000│ │
│010│dec ax │ 1 │00110000│IRQ4, IRQ5 │
│011│nop │ 1 │00000000│ │
│---│------------------------------│-----│--------│------------------------------│
│012│nop │ 1 │00000000│останов │
│020│mov al, 00010011b │ 1 │00000000│одна БИС;загр ICW4 │
│021│out 7Ah, al │ 1 │00000000│загрузка ICW1 │
│022│mov al, 0 │ 1 │00000000│адрес IDT │
│023│out 7Bh, al │ 1 │00000000│загрузка ICW2 │
│024│mov al, 00001101b │ 1 │00000000│ведущая БИС;BM86 │
│025│out 7Bh, al │ 1 │00000000│загрузка ICW4 │
│026│ret │ 1 │00000000│возврат │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП0 представлена ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│11F│ │ │ │ППОП0 │
│120│sti │ 1 │00000000│разрешение прерываний │
│121│push ax │ 1 │00000000│сохранение ax │
│122│inc ax │ 1 │00000000│обработка │
│123│inc ax │ 1 │00000000│* │
│124│inc ax │ 1 │00000000│ │
│125│inc ax │ 1 │00000000│ │
│126│mov al, 10100000b │ 1 │00000000│циклический сдвиг типа А │
│127│out 7Ah, al │ 1 │00000000│загрузка OCW2 │
│128│pop ax │ 1 │00000000│восстановление ax │
│129│iret │ 1 │00000000│возврат из ППОП0 │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП1-ППОП7 аналогичны: разрешение прерываний для организации обработки вложенных прерываний, обработка прерывания и загрузка в БИС по адресу 7Аh OCW2 с указанием выполнения циклического сдвига приоритетов по типу А . Диаграмма прерываний показана на рисунке 3.
Рисунок 3 - Диаграмма прерываний для задания 3
4 Режим циклического сдвига приоритетов по типу В
Поля L2-L0 в OCW2 определяются следующим образом: L2-L0=№ППОП+3. Основная программа и подпрограмма инициализации ПКП представлены ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│call 20h │ 1 │00000000│ПП инициализации ПКП │
│001│mov ax, 20 │ 1 │00000000│Основная программа │
│002│dec ax │ 1 │00001000│IRQ3 │
│003│dec ax │ 1 │00000000│ │
│004│dec ax │ 1 │00000000│ │
│005│dec ax │ 1 │00000000│ │
│006│dec ax │ 1 │00000000│ │
│007│dec ax │ 1 │00000000│ │
│008│dec ax │ 1 │00000000│ │
│009│dec ax │ 1 │00000010│IRQ1 │
│00A│dec ax │ 1 │00000000│ │
│00B│dec ax │ 1 │00000000│ │
│00C│dec ax │ 1 │00000000│ │
│00D│dec ax │ 1 │00000000│ │
│00E│dec ax │ 1 │00000000│ │
│00F│dec ax │ 1 │00000000│ │
│010│dec ax │ 1 │00110000│IRQ4, IRQ5 │
│011│nop │ 1 │00000000│ │
│012│nop │ 1 │00000000│останов │
│---│------------------------------│-----│--------│------------------------------│
│020│mov al, 00010011b │ 1 │00000000│одна БИС;загр ICW4 │
│021│out 7Ah, al │ 1 │00000000│загрузка ICW1 │
│022│mov al, 0 │ 1 │00000000│адрес IDT │
│023│out 7Bh, al │ 1 │00000000│загрузка ICW2 │
│024│mov al, 00001101b │ 1 │00000000│ведущая БИС;BM86 │
│025│out 7Bh, al │ 1 │00000000│загрузка ICW4 │
│026│ret │ 1 │00000000│возврат │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП0 представлена ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│11F│ │ │ │ППОП0 │
│120│sti │ 1 │00000000│разрешение прерываний │
│121│push ax │ 1 │00000000│сохранение ax │
│122│inc ax │ 1 │00000000│обработка │
│123│inc ax │ 1 │00000000│* │
│124│inc ax │ 1 │00000000│ │
│125│inc ax │ 1 │00000000│ │
│126│mov al, 01100000b │ 1 │00000000│сброс ISR0 │
│127│out 7Ah, al │ 1 │00000000│загрузка OCW2 │
│126│mov al, 11000011b │ 1 │00000000│установка дна приор. кольца │
│127│out 7Ah, al │ 1 │00000000│загрузка OCW2 │
│128│pop ax │ 1 │00000000│восстановление ax │
│129│iret │ 1 │00000000│возврат из ППОП0 │ │---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП1-ППОП7 аналогичны: разрешение прерываний для организации обработки вложенных прерываний, обработка прерывания и загрузка в БИС по адресу 7Аh OCW2 со сбросом в "0" ISR-бита, указанного в поле L2-L0, а затем загрузка OCW2 с установкой низшего приоритета по числу в поле L2-L0, определяемому по указанной выше формуле. Диаграмма прерываний показана на рисунке 4.
Рисунок 4 - Диаграмма прерываний для задания 4
5 Режим программного опроса
Основная программа и подпрограмма инициализации ПКП представлены ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│call 20h │ 1 │00000000│ПП инициализации ПКП │
│001│mov ax, 20 │ 1 │00000000│Основная программа │
│002│dec ax │ 1 │10010000│IRQ 4,7 │
│003│dec ax │ 1 │00000000│ │
│004│dec ax │ 1 │00000000│ │
│005│dec ax │ 1 │00000000│ │
│006│call 30h │ 1 │00000000│программный опрос │
│007│dec ax │ 1 │00000000│ │
│008│dec ax │ 1 │10000100│IRQ 2,7 │
│009│call 30h │ 1 │00000000│программный опрос │
│00A│dec ax │ 1 │00101000│IRQ 3,5 │
│00B│call 30h │ 1 │00000000│программный опрос │
│00C│dec ax │ 1 │00000000│ │
│00D│dec ax │ 1 │00000000│ │
│00E│call 30h │ 1 │00000000│программный опрос │
│00F│dec ax │ 1 │00000000│ │
│010│dec ax │ 1 │00001000│IRQ 3 │
│011│dec ax │ 1 │00000000│ │
│012│call 30h │ 1 │00000000│программный опрос │
│013│nop │ 1 │00000000│ │
│014│nop │ 1 │00000000│останов │
│---│------------------------------│-----│--------│--------------------------------│ │01F│ │ │ │ │
│020│mov al, 00010011b │ 1 │00000000│одна БИС;загр ICW4 │
│021│out 7Ah, al │ 1 │00000000│загрузка ICW1 │
│022│mov al, 0 │ 1 │00000000│адрес IDT │
│023│out 7Bh, al │ 1 │00000000│загрузка ICW2 │
│024│mov al, 00001101b │ 1 │00000000│ведущая БИС;BM86 │
│025│out 7Bh, al │ 1 │00000000│загрузка ICW4 │
│026│cli │ 1 │00000000│запрещение прерываний │
│027│ret │ 1 │00000000│возврат │
│---│------------------------------│-----│--------│--------------------------------│ │02F│ │ │ │ПП программного опроса │
│030│pushf │ 1 │00000000│сохранение регистра флагов │
│031│push ax │ 1 │00000000│сохранение регистра ах │
│032│mov al, 00001100b │ 1 │00000000│установка режима опроса │
│033│out 7Ah, al │ 1 │00000000│загрузка OCW3 │
│034│in al, 7Ah │ 1 │00000000│чтение СС │
│035│or al, al │ 1 │00000000│ │
│036│jns 37h │ 1 │00000000│проверка бита D7 │
│037│and al, 07h │ 1 │00000000│в al номер запроса │
│038│callidt │ 1 │00000000│вызов ППОП по номеру из al │
│039│pop ax │ 1 │00000000│восстановление регистра ах │
│03A│popf │ 1 │00000000│восстановление регистра флагов│
│03B│ret │ 1 │00000000│возврат │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП0 представлена ниже.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│11F│ │ │ │ППОП0 │
│120│push ax │ 1 │00000000│сохранение ax │
│121│inc ax │ 1 │00000000│обработка │
│122│inc ax │ 1 │00000000│ │
│123│inc ax │ 1 │00000000│ │
│124│inc ax │ 1 │00000000│ │
│125│mov al, 00100000b │ 1 │00000000│ │
│126│out 7Ah, al │ 1 │00000000│загрузка OCW2 │
│127│pop ax │ 1 │00000000│восстановление ax │
│128│retf │ 1 │00000000│возврат из ППОП0 │ │---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП1-ППОП7 аналогичны: обработка прерывания и загрузка в БИС по адресу 7Аh OCW2 с указанием выполнения неспецифической команды конца прерывания. Диаграмма прерываний показана на рисунке 5.
Рисунок 5 - Диаграмма прерываний для задания 5
Теоретическая часть
Функциональная схема каскадного включения БИС ПКП ВН59А для микропроцессора К1810ВМ86 показана на рисунке 6.
Программа инициализации ведущей БИС: режим циклического сдвига приоритетов по типу А, порт 7Аh, ведомые на IRQ3 и IRQ7.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│020│mov al, 00010001b │ 1 │00000000│каскад; загр ICW4 │
│021│out 7Ah, al │ 1 │00000000│загрузка ICW1 │
│022│mov al, 0 │ 1 │00000000│адрес IDT │
│023│out 7Bh, al │ 1 │00000000│загрузка ICW2 │
│024│mov al, 10001000b │ 1 │00000000│ведомые на 3, 7 │
│025│out 7Bh, al │ 1 │00000000│загрузка ICW3 │
│026│mov al, 00011101b │ 1 │00000000│PSV=1;BM86 │
│027│out 7Bh, al │ 1 │00000000│загрузка ICW4 │
│028│ret │ 1 │00000000│возврат │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
Программа инициализации ведомой БИС: режим фиксированных приоритетов, порт 82h, IRQ ведущей - 3, маска на IRQ6.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│030│mov al, 00010001b │ 1 │00000000│каскад; загр ICW4 │
│031│out 82h, al │ 1 │00000000│загрузка ICW1 │
│032│mov al, 40h │ 1 │00000000│адрес IDT │
│033│out 83h, al │ 1 │00000000│загрузка ICW2 │
│034│mov al, 00000011b │ 1 │00000000│ведомая на IRQ3 │
│035│out 83h, al │ 1 │00000000│загрузка ICW3 │
│036│mov al, 00000001b │ 1 │00000000│Ведомый с ~EN;BM86 │
│037│out 83h, al │ 1 │00000000│загрузка ICW4 │
│038│mov al, 01000000b │ 1 │00000000│маска на IRQ6 │
│039│out 83h, al │ 1 │00000000│запись маски │
│03A│ret │ 1 │00000000│возврат │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП0 ведущей БИС.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│120│push ax │ 1 │00000000│ППОП0; сохранение ax │
│121│in al, 7Bh │ 1 │00000000│чтение маски │
│122│or al, 0000001b │ 1 │00000000│маскирование разряда 0 │
│123│out 7Bh, al │ 1 │00000000│запись маски │
│124│sti │ 1 │00000000│разрешение прерываний │
│125│inc ax │ 1 │00000000│обработка прерывания │
│126│inc ax │ 1 │00000000│ │
│127│cli │ 1 │00000000│запрет прерываний │
│128│in al, 7Bh │ 1 │00000000│чтение маски │
│129│and al, 1111110b │ 1 │00000000│размаскирование разряда 0 │
│12A│out 7Bh, al │ 1 │00000000│запись маски │
│12B│mov al, 10100000b │ 1 │00000000│сброс ISR и сдвиг по типу А │
│12C│out 7Ah, al │ 1 │00000000│загрузка OCW2 │
│12D│sti │ 1 │00000000│разрешение прерываний │
│12E│pop ax │ 1 │00000000│восстановление ax │
│12F│iret │ 1 │00000000│возврат из ППОП0 │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП1, ППОП2, ППОП4 - ППОП6 аналогичны ППОП0 (маскирование соответствующего разряда).
ППОП0-7 ведомой БИС.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│---│------------------------------│-----│--------│------------------------------│
│060│push ax │ 1 │00000000│ППОП3;сохранение ax │
│061│sti │ 1 │00000000│разрешение прерываний │
│062│inc ax │ 1 │00000000│обработка прерывания │
│063│inc ax │ 1 │00000000│ │
│064│inc ax │ 1 │00000000│ │
│065│cli │ 1 │00000000│запрет прерываний │
│066│call 140h │ 1 │00000000│ПП завершения ППОП │
│067│pop ax │ 1 │00000000│восстановление ax │
│068│iret │ 1 │00000000│возврат из ППОП3 │
│---│------------------------------│-----│--------│------------------------------│
│140│mov al, 00100000b │ 1 │00000000│OCW2 для 3 ведомой │
│141│out 82h, al │ 1 │00000000│загрузка OCW2 для 3 ведомой │
│142│in al, 82h │ 1 │00000000│чтение ISR 3 ведомой │
│143│cmp al, 0 │ 1 │00000000│? ISR=0 │
│144│jnz 147h │ 1 │00000000│если <>0 │
│145│mov al, 00100000b │ 1 │00000000│OCW2 для ведущей │
│146│out 7Ah, al │ 1 │00000000│загрузка OCW2 для ведущей │
│147│ret │ 1 │00000000│возврат из ПП │
│---│------------------------------│-----│--------│------------------------------│
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
Выводы по лабораторной работе
- В режимах фиксированных приоритетов, спецмаскирования приоритеты входов запросов на прерывание не меняются во время работы, а в режиме циклического сдвига приоритетов приоритеты изменяются: по типу А - после завершения выполнения текущей ППОП низший приоритет присваивается номеру запроса на прерывание, завершившего обслуживание, по типу В - номеру запроса на прерывание, установленного программистом.
- В режимах фиксированных приоритетов и циклических сдвигов во время выполнения ППОП вновь поступившие запросы на прерывание смогут прервать выполнение ППОП, если эти запросы имеют более высокий приоритет по сравнению текущим обрабатываемым запросом, а в режиме спецмаскирования ППОП будут прерывать только те запросы, которые еще не находятся в обработке (не замаскированы).
- Во всех режимах при одновременном поступлении нескольких запросов на прерывание обрабатывается запрос с более высоким приоритетом, причем для режима спецмаскирования он не должен быть замаскирован.
- В режиме программного опроса определение источника прерывания выполняется непосредственно программистом путем последовательного опроса источников запроса на прерывание многократной загрузкой управляющего слова OCW3 и чтением в МПР СС ПКП.
- Режим фиксированных приоритетов применяется для обслуживания устройств с неодинаковыми фиксированными приоритетами. Режим специального маскирования применяется для обслуживания бесприоритетных устройств. Режим циклического сдвига приоритетов по типу А применяется для обслуживания однотипных внешних устройств, а режим циклического сдвига приоритетов по типу В позволяет обслуживать внешние устройства в нужной программисту последовательности. Режим программного опроса обычно применяется в микроконтроллерах, которые не имеют аппаратных средств поддержки прерываний (генерации ~INTA).
- При каскадном включении нужно устанавливать режим строгого упорядочения приоритетов, при этом необходимо учитывать, что разрешается прием нового запроса, только что принятого на обработку, поэтому те входы ведущей БИС, к которым не подключены ведомые БИС, должны маскироваться в начале ППОП и размаскироваться при выходе из ППОП.
- Для ведомых БИС при каскадном включении после сброса бита в регистре ISR ведомой нужно анализировать этот регистр, и при равенстве его нулю сбрасывать соответствующий бит в ISR ведущей.
Документ
Категория
Рефераты
Просмотров
18
Размер файла
474 Кб
Теги
лаб2, мпс
1/--страниц
Пожаловаться на содержимое документа