Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение высшего
ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Факультет автоматики и вычислительной техники
Кафедра электронных вычислительных машин
«Изучение систем обработки прерываний на основе
периферийной БИС i8259A»
Отчет
Лабораторная работа №2 по дисциплине
«Микропроцессорные системы»
Вариант 4
Выполнил студент группы ВМ-41 ____________________//
Проверил ________________________________________//
Киров 2007
1 Задание
- разработать программу инициализации ПКП для режимов фиксированных приоритетов, спецмаскирования и программного опроса;
- разработать текст пользовательской программы во время выполнения которой приходят запросы на прерывание IRQ;
- разработать также тексты подпрограмм обработки прерываний, во время выполнения которых также могут приходить запросы IRQ;
- выполнить исследования принципов обслуживания запросов для следующих дисциплин обслуживания прерываний:
1. фиксированных приоритетов;
2. специального маскирования;
3. циклического сдвига с использованием OCW2 формата RE по типу А;
4. циклического сдвига с использованием OCW2 формата - RSE по типу В ( L2-L0 = №ППОП + X );
5. программного опроса.
Обозначения:
4* - процессор i8080 c шагом 4
8* - процессор i8080 c шагом 8
# - Каскадное включение:
$ - ведомая БИС
&- ведущая БИС с PSV
Таблица 1
Задание | Вариант19 |
1 фиксированные | #& |
2 спецмаскир. | |
3 сдвиг типа А | #$4* |
4 сдвиг типа В | |
5 прогр. опрос | |
Х для типа В | 2 |
Ведомые на: | 0,7 |
Базовый адрес для ПКП будет: 4*10+1*2=42(dec) = 2Ah (hex)
Начальные адреса ППОП для микропроцессора i8086
Основная программа | N команды | Вариант 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 |
Задание для режима программного опроса.
№ команды чтения СС ПКП | № команды поступления IRQ |
4 | 5 |
9 | 8 |
12 | |
14 | 13 |
19 | 18 |
Последовательность поступления запросов на прерывания:
5,7; 6,0; 4,7; 2; 5; 4,1; 0; 1,3
1 Текст программы для режима фиксированных приоритетов, процессор i8086, каскадное включение, ведущая с PSV.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│call 20h │ 1 ││инициализация i8086 │
│001│mov al,1 │ 1 ││ФИКСИР ВЕДУЩАЯ С PSV │
│002│mov dl,1 │ 1 ││ │
│003│add al, dl │ 1 ││ │
│004│mov dl,16 │ 1 ││ │
│005│sub al,5 │ 1 ││* │
│006│sub al, dl │ 1 ││ │
│007│push ax │ 1 ││ │
│008│push dx │ 1 ││ │
│009│mov al,1 │ 1 ││ │
│00A│mov dl,17 │ 1 ││* │
│00B│add al, dl │ 1 ││ │
│00C│inc al │ 1 ││ │
│00D│inc dl │ 1 ││** │
│00E│sub al, dl │ 1 ││ │
│00F│inc al │ 1 ││ │
│010│mov al, dl │ 1 ││ │
│011│not al │ 1 ││ │
│012│or al,16 │ 1 ││ │
│013│inc dl │ 1 ││ │
│014│dec al │ 1 ││ │
│015│mov dl, al │ 1 ││ │
│016│sub al,13 │ 1 ││ │
│017│pop dx │ 1 ││ │
│018│pop ax │ 1 ││ │
│019│mov al, dl │ 1 ││ │
│01A│not al │ 1 ││ │
│01B│ │ │ │ │
│01F│ │ │ │ │
│020│mov al,b │ 1 ││UP=0 | каскадн | загр ICW4 │
│021│out 2ah, al │ 1 ││загрузка ICW1 │
│022│mov al,b │ 1 ││адрес IDT 020h │
│023│out 2bh, al │ 1 ││загрузка ICW2 │
│024│mov al,b │ 1 ││ведомые на 0,7 │
│025│out 2bh, al │ 1 ││загрузка ICW3 │
│026│mov al,b │ 1 ││PSV=1 | AEOI=0 | i8086 │
│027│out 2bh, al │ 1 ││загрузка ICW4 │
│028│ret │ 1 ││ │
│029│ │ │ │ │
│03F│ │ │ │ППОП 2 │
│040│push ax │ 1 ││ │
│041│push dx │ 1 ││ │
│042│mov dl,b │ 1 ││формирование маски │
│043│call 0f0h │ 1 ││установка маски │
│044│sti │ 1 ││разрешить прерывания │
│045│dec al │ 1 ││обработчик │
│046│cli │ 1 ││ │
│047│mov al,b │ 1 ││EOI | clear ISR │
│048│out 2ah, al │ 1 ││загрузка OCW2 │
│049│mov dl,b │ 1 ││размаскирование │
│04A│call 0f5h │ 1 ││сброс маски │
│04B│sti │ 1 ││ │
│04C│pop dx │ 1 ││ │
│04D│pop ax │ 1 ││восстановление AL │
│04E│iret │ 1 ││ │
│0FF│ │ │ │ППОП 0 │
│100│sti │ 1 ││разрешить прерывания │
│101│push ax │ 1 ││сохранение AL │
│102│mov al,1 │ 1 ││0 │
│103│add al,16 │ 1 ││обработчик │
│104│dec al │ 1 ││обработчик │
│105│mov al,b │ 1 ││сброс бита ISR(ведомый) │
│106│out 2ch, al │ 1 ││запись OCW2 │
│107│in al, 2ch │ 1 ││читаем ISR │
│108│test al, 00h │ 1 ││проверяем на рав. 0 │
│109│jnz 10ch │ 1 ││если не равно то к 10c │
│10A│mov al,b │ 1 ││EOI | clear ISR │
│10B│out 2ah, al │ 1 ││загрузка OCW2 │
│10C│pop ax │ 1 ││восстановление AL │
│10D│iret │ 1 ││ │
Диаграмма прерываний
0┤▒▒░░ ▒▒░░ ▒▒░░
│││││ ││││ ││││
1┤││││ ││││ ▒▒││││░░▒▒░░
│││││ ││││ ││││││││││││
2┤││││ ││││ ▒▒░░ ││││││││││││ ▒▒░░
│││││ ││││ ││││ ││││││││││││ ││││
3┤││││ ││││ ││││ ││││││││││││▒▒░░ ▒▒░░││││
│││││ ││││ ││││ ││││││││││││││││ ││││││││
4┤││││ ││││▒▒││││░░ ││││││││││││││││▒▒░░ ││││││││▒▒░░
│││││ ││││││││││││ ││││││││││││││││││││ ││││││││││││
5┤││││▒▒││││││││││││▒▒││││││││││││││││││││░░ ││││││││││││
│││││││││││││││││││││││││││││││││││││││││││ ││││││││││││
6┤││││││││││││││││││││││││││││││││││││││││││▒▒░░ ││││││││││││
│││││││││││││││││││││││││││││││││││││││││││││││ ││││││││││││
7┤││││││││││││││││││││││││││││││││││││││││││││││▒▒░░││││││││││││
│││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││
└─────────────────────────────────────────────────────────────────────────────
2.Текст программы для режима специального маскирования
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│mov al,b │ 1 ││ │
│001│out 2ah, al │ 1 ││Загрузка ICW1 │
│002│mov al,08h │ 1 ││ │
│003│out 2bh, al │ 1 ││Загрузка ICW2 │
│004│mov al,b │ 1 ││ │
│005│out 2bh, al │ 1 ││Загрузка ICW4 │
│006│mov al,b │ 1 ││ │
│007│out 2ah, al │ 1 ││Установка спецмаскирования │
│008│jmp 10h │ 1 ││ │
│009│ │ │ │ │
│00F│ │ │ │ │
│010│nop │ 1 ││1 │
│011│nop │ 1 ││2 │
│012│nop │ 1 ││3 │
│013│nop │ 1 ││4 │
│014│nop │ 1 ││5 │
│015│nop │ 1 ││6 │
│016│nop │ 1 ││7 │
│017│nop │ 1 ││8 │
│018│nop │ 1 ││9 │
│019│nop │ 1 ││10 │
│01A│nop │ 1 ││11 │
│01B│nop │ 1 ││12 │
│01C│nop │ 1 ││13 │
│01D│nop │ 1 ││14 │
│01E│nop │ 1 ││15 │
│01F│nop │ 1 ││16 │
│020│nop │ 1 ││17 │
│021│nop │ 1 ││18 │
│022│ │ │ │ │
│03F│ │ │ │ │
│040│push ax │ 1 ││ППОП IRQ2 │
│041│sti │ 1 ││ │
│042│inc ax │ 1 ││ │
│043│add ax, ax │ 1 ││ │
│044│ror ax,2 │ 1 ││ │
│045│shl ax,4 │ 1 ││ │
│046│cli │ 1 ││ │
│047│mov al,62h │ 1 ││ │
│048│out 2ah, al │ 1 ││Сброс бита ISR │
│049│pop ax │ 1 ││ │
│04A│iret │ 1 ││ │
Диаграмма прерываний
────────────────────────────────────────────────────────────────────────────────
0┤▒▒ ░░▒▒░░
│││ ││││││
1┤││ ▒▒ ░░▒▒░░ ││││││
│││ ││ ││││││ ││││││
2┤││ ▒▒░░ ││ ││││││ ││││││ ▒▒ ░░
│││ ││││ ││ ││││││ ││││││ ││ ││
3┤││ ││││ ││ ▒▒░░││││││ ││││││▒▒░░││ ││
│││ ││││ ││ ││││││││││ ││││││││││││ ││
4┤││ ▒▒││││░░ ││▒▒░░││││││││││ ││││││││││││▒▒░░││
│││ ││││││││ ││││││││││││││││ ││││││││││││││││││
5┤││▒▒ ││││││││ ││││││││││││││││ ░░▒▒░░││││││││││││││││││
│││││ ││││││││ ││││││││││││││││ ││││││││││││││││││││││││
6┤││││ ▒▒││││││││░░ ││││││││││││││││ ││││││││││││││││││││││││
│││││ ││││││││││││ ││││││││││││││││ ││││││││││││││││││││││││
7┤││││▒▒││││││││││││░░▒▒││││││││││││││││░░││││││││││││││││││││││││
│││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││
└─────────────────────────────────────────────────────────────────────────────
4. Текст программы для режима циклического сдвига по типу А, каскадное включение, ведомая БИС, i8080 шаг 4
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│call 20h │ 1 ││ПП инициализации │
│001│mov ax, F00Fh │ 1 ││ │
│002│mov cx, 0FF0h │ 1 ││ │
│003│mov dx, 0FF0h │ 1 ││ │
│004│mov bx, F00Fh │ 1 ││ │
│005│mov si, 1001h │ 1 ││ │
│006│mov di, 0110h │ 1 ││ │
│007│sub ax, si │ 1 ││ │
│008│sub cx, di │ 1 ││ │
│009│sub dx, di │ 1 ││ │
│00A│sub bx, si │ 1 ││ │
│00B│nop │ 1 ││ │
│00C│nop │ 1 ││ │
│00D│nop │ 1 ││ │
│00E│xor ax, ax │ 1 ││ │
│00F│xor bx, bx │ 1 ││ │
│010│xor cx, cx │ 1 ││ │
│011│xor dx, dx │ 1 ││ │
│012│sub bx, dx │ 1 ││ │
│013│mov dx, ax │ 1 ││ │
│014│mov ax, bx │ 1 ││ │
│015│mov dx,5h │ 1 ││ │
│016│add dx, ax │ 1 ││ │
│017│inc ax │ 1 ││ │
│018│dec bx │ 1 ││ │
│019│inc ax │ 1 ││ │
│01A│ │ │ │ │
│01F│ │ │ │ │
│020│mov al,b │ 1 ││ │
│021│out 2ah, al │ 1 ││загрузка ICW1 │
│022│mov al,b │ 1 ││старший байт адреса │
│023│out 2bh, al │ 1 ││загрузка ICW2 │
│024│mov al,b │ 1 ││ │
│025│out 2bh, al │ 1 ││загрузка ICW3 │
│026│mov al, b │ 1 ││ │
│027│out 2bh, al │ 1 ││загрузка ICW4 │
│028│mov al, b │ 1 ││ │
│029│out 2ah, al │ 1 ││загрузка OCW3 │
│02A│ret │ 1 ││ │
│02B│ │ │ │ │
│03F│ │ │ │ │
│040│push ax │ 1 ││ППОП №2 │
│041│pushf │ 1 ││ │
│042│sti │ 1 ││ │
│043│dec ax │ 1 ││ │
│044│inc ax │ 1 ││ │
│045│cmp ax,10h │ 1 ││ │
│046│dec ax │ 1 ││ │
│047│inc ax │ 1 ││ │
│048│cli │ 1 ││ │
│049│mov al,b │ 1 ││сброс бита в ISR │
│04A│out 2ah, al │ 1 ││загрузка OCW2 │
│04B│call 180h │ 1 ││ │
│04C│popf │ 1 ││ │
│04D│pop ax │ 1 ││ │
│04E│ret │ 1 ││ │
│04F│ │ │ │ │
│09F│ │ │ │шаг 4 │
│0A0│jmp 100h │ 1 ││ППОП 0 │
│0A1│ │ │ │ │
│0A2│ │ │ │ │
│0A3│ │ │ │ │
│0A4│jmp 110h │ 1 ││ППОП 1 │
│0A5│ │ │ │ │
│0A6│ │ │ │ │
│0A7│ │ │ │ │
│0A8│jmp 040h │ 1 ││ППОП 2 │
│0A9│ │ │ │ │
│0AA│ │ │ │ │
│0AB│ │ │ │ │
│0AC│jmp 080h │ 1 ││ППОП 3 │
│0AD│ │ │ │ │
│0AE│ │ │ │ │
│0AF│ │ │ │ │
│0B0│jmp 060h │ 1 ││ППОП 4 │
│0B1│ │ │ │ │
│0B2│ │ │ │ │
│0B3│ │ │ │ │
│0B4│jmp 050h │ 1 ││ППОП 5 │
│0B5│ │ │ │ │
│0B6│ │ │ │ │
│0B7│ │ │ │ │
│0B8│jmp 090h │ 1 ││ППОП 6 │
│0B9│ │ │ │ │
│0BA│ │ │ │ │
│0BB│ │ │ │ │
│0BC│jmp 070h │ 1 ││ППОП 7 │
│0BD│ │ │ │ │
│17F│ │ │ │ │
│180│in al, 2ah │ 1 ││ Сброс ISR ведущей │
│181│cmp al, 0 │ 1 ││ │
│182│jnz 185h │ 1 ││ │
│183│mov al, b │ 1 ││ │
│184│out 28h, al │ 1 ││ │
│185│ret │ 1 ││ │
Диаграмма прерываний
0┤▒▒░░ ▒▒░░ ▒▒░░
│││││ ││││ ││││
1┤││││ ││││ ││││▒▒░░
│││││ ││││ ││││││││
2┤││││ ││││▒▒░░ ││││││││ ▒▒░░
│││││ ││││││││ ││││││││ ││││
3┤││││ ││││││││ ││││││││▒▒░░▒▒░░ ││││
│││││ ││││││││ ││││││││││││││││ ││││
4┤││││ ││││││││▒▒░░ ││││││││││││││││▒▒░░││││
│││││ ││││││││││││ ││││││││││││││││││││││││
5┤││││▒▒░░ ││││││││││││▒▒░░││││││││││││││││││││││││
│││││││││ ││││││││││││││││││││││││││││││││││││││││
6┤││││││││▒▒░░ ││││││││││││││││││││││││││││││││││││││││
│││││││││││││ ││││││││││││││││││││││││││││││││││││││││
7┤││││││││││││▒▒░░││││││││││││││││││││││││││││││││││││││││
│││││││││││││││││││││││││││││││││││││││││││││││││││││││││
└─────────────────────────────────────────────────────────────────────────────
4. Текст программы для режима циклического сдвига по типу В
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│call 20h │ 1 ││ │
│001│mov ax,2 │ 1 ││ │
│002│mov bx,3 │ 1 ││ │
│003│add bx, ax │ 1 ││ │
│004│inc cx │ 1 ││ │
│005│nop │ 1 ││ │
│006│nop │ 1 ││ │
│007│sub cx,8 │ 1 ││ │
│008│mov dx, cx │ 1 ││ │
│009│sub dx, bx │ 1 ││ │
│00A│xor cx, dx │ 1 ││ │
│00B│dec ax │ 1 ││ │
│00C│nop │ 1 ││ │
│00D│and ax, bx │ 1 ││ │
│00E│mov ax,2 │ 1 ││ │
│00F│mov bx,4 │ 1 ││ │
│010│add bx, ax │ 1 ││ │
│011│nop │ 1 ││ │
│012│ │ │ │ │
│01F│ │ │ │ │
│020│push ax │ 1 ││ │
│021│mov al,b │ 1 ││ICW1 │
│022│out 2ah, al │ 1 ││ │
│023│mov al,b │ 1 ││ICW2 │
│024│out 2bh, al │ 1 ││ │
│025│mov al,b │ 1 ││ICW4 │
│026│out 2bh, al │ 1 ││ │
│027│pop ax │ 1 ││ │
│028│ret │ 1 ││ │
│029│ │ │ │ │
│03F│ │ │ │ │
│040│push ax │ 1 ││ППОП2 │
│041│sti │ 1 ││ │
│042│sub cx, ax │ 1 ││ │
│043│inc cx │ 1 ││ │
│044│xor cx, dx │ 1 ││ │
│045│dec ax │ 1 ││ │
│046│nop │ 1 ││ │
│047│cli │ 1 ││ │
│048│mov al, b │ 1 ││ │
│049│out 2ah, al │ 1 ││ │
│04A│mov al, b │ 1 ││ │
│04B│out 2ah, al │ 1 ││ │
│04C│pop ax │ 1 ││ │
│04D│iret │ 1 ││ │
Диаграмма прерываний
0┤▒▒░░ ▒▒░░ ▒▒░░
│││││ ││││ ││││
1┤││││ ││││ ││││ ▒▒░░
│││││ ││││ ││││ ││││
2┤││││ ││││ ▒▒░░ ││││ ││││ ▒▒░░ ▒▒░░ ▒▒░░
│││││ ││││ ││││ ││││ ││││ ││││ ││││ ││││
3┤││││ ││││ ││││ ││││▒▒░░ ││││ ││││▒▒││││░░││││
│││││ ││││ ││││ ││││││││ ││││ ││││││││││││││││
4┤││││ ││││▒▒░░ ││││ ││││││││ ││││▒▒░░││││││││││││││││▒▒░░
│││││ ││││││││ ││││ ││││││││ ││││││││││││││││││││││││││││
5┤││││▒▒░░││││││││ ││││▒▒░░││││││││ ││││││││││││││││││││││││││││
│││││││││││││││││ ││││││││││││││││ ││││││││││││││││││││││││││││
6┤││││││││││││││││ ││││││││││││││││▒▒░░││││││││││││││││││││││││││││
│││││││││││││││││ ││││││││││││││││││││││││││││││││││││││││││││││││
7┤││││││││││││││││▒▒░░││││││││││││││││││││││││││││││││││││││││││││││││
│││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││││
└─────────────────────────────────────────────────────────────────────────────
5. Режим программного опроса.
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│000│mov al,b │ 1 ││ │
│001│out 2ah, al │ 1 ││Загрузка ICW1 │
│002│mov al,08h │ 1 ││ │
│003│out 2bh, al │ 1 ││Загрузка ICW2 │
│004│mov al,b │ 1 ││ │
│005│out 2bh, al │ 1 ││Загрузка ICW3 │
│006│mov al,b │ 1 ││ │
│007│out 2bh, al │ 1 ││Загрузка ICW4 │
│008│cli │ 1 ││ │
│009│jmp 20h │ 1 ││ │
│00A│ │ │ │ │
│00F│ │ │ │ │
│010│mov al,b │ 1 ││ │
│011│out 2ah, al │ 1 ││Загрузка OCW3 (прогр-ый опрос)│
│012│in al,2ah │ 1 ││ │
│013│or al, al │ 1 ││ │
│014│jns 17h │ 1 ││ │
│015│and al,07h │ 1 ││ │
│016│callidt │ 1 ││ │
│017│ret │ 1 ││ │
│018│ │ │ │ │
│01F│ │ │ │ │
│020│nop │ 1 ││1 │
│021│nop │ 1 ││2 │
│022│nop │ 1 ││3 │
│023│call 10h │ 1 ││4 │
│024│nop │ 1 ││5 │
│025│nop │ 1 ││6 │
│026│nop │ 1 ││7 │
│027│nop │ 1 ││8 │
│028│call 10h │ 1 ││9 │
│029│nop │ 1 ││10 │
│02A│nop │ 1 ││11 │
│02B│call 10h │ 1 ││12 │
│02C│nop │ 1 ││13 │
│02D│call 10h │ 1 ││14 │
│02E│nop │ 1 ││15 │
│02F│nop │ 1 ││16 │
│030│nop │ 1 ││17 │
│031│nop │ 1 ││18 │
│032│call 10h │ 1 ││19 │
│033│ │ │ │ │
│03F│ │ │ │ │
│040│push ax │ 1 ││ППОП IRQ2 │
│041│mov al,62h │ 1 ││ │
│042│out 2ah, al │ 1 ││ │
│043│pop ax │ 1 ││ │
│044│retf │ 1 ││ │
Диаграмма прерываний
────────────────────────────────────────────────────────────────────────────────
0┤ ▒▒░░
│ ││││
1┤ ││││
│ ││││
2┤ ││││ ▒▒░░
│ ││││ ││││
3┤ ││││ ││││
│ ││││ ││││
4┤ ││││ ▒▒░░││││
│ ││││ ││││││││
5┤ ││││▒▒░░││││││││
│ ││││││││││││││││
6┤ ││││││││││││││││
│ ││││││││││││││││
7┤ ││││││││││││││││
│ ││││││││││││││││
└─────────────────────────────────────────────────────────────────────────────
Выводы:
- В режимах фиксированных приоритетов, спецмаскирования приоритеты входов запросов на прерывание не меняются во время работы, а в режиме циклического сдвига приоритетов приоритеты изменяются: по типу А – после завершения выполнения текущей ППОП низший приоритет присваивается номеру запроса на прерывание, завершившего обслуживание, по типу В – номеру запроса на прерывание, установленного программистом.
- В режимах фиксированных приоритетов и циклических сдвигов во время выполнения ППОП вновь поступившие запросы на прерывание смогут прервать выполнение ППОП, если эти запросы имеют более высокий приоритет по сравнению текущим обрабатываемым запросом; а в режиме спецмаскирования ППОП будут прерывать только те запросы, которые еще не находятся в обработке (не замаскированы).
- Во всех режимах при одновременном поступлении нескольких запросов на прерывание обрабатывается запрос с более высоким приоритетом, а также он не должен быть замаскирован (для режима спецмаскирования).
- В режиме программного опроса определение источника прерывания выполняется непосредственно программистом путем последовательного опроса источников запроса на прерывание многократной загрузкой управляющего слова OCW3 и чтением в МПР СС ПКП.
- При каскадном включении нужно устанавливать режим строгого упорядочения приоритетов, при этом необходимо учитывать, что разрешается прием нового запроса, только что принятого на обработку, поэтому те входы ведущей БИС, к которым не подключены ведомые БИС, должны маскироваться в начале ППОП и размаскироваться при выходе из ППОП.
- Для ведомых БИС при каскадном включении после сброса бита в регистре ISR ведомой нужно анализировать этот регистр, и при равенстве его нулю сбрасывать соответствующий бит в ISR ведущей.
Теоретическая часть
Функциональная схема каскадного включения БИС ПКП ВН59А для
микропроцессора К1810ВМ86
1. Разработать функциональную схему каскадного включения БИС ПКП ВН59А для микропроцессора К1810ВМ86 для вариантов заданий, приведенных в таблице 2
2. Привести программу инициализации ведущей и одной ведомой БИС с настройкой на режимы работы, заданные в таблице 2:
где Ф - режим фиксированных приоритетов; А - сдвиг по типу А;
Таблица 2
Режим/вариант | 4 |
Ведущая: режим маска (IRQ) | А |
Ведомая: режим маска (IRQ) | Ф 6 |
3. Привести фрагмент тексты ППОП для ведомой и ведущей БИС ПКП (начало и конец ППОП).
Программы инициализации ведущей и ведомой БИС
- ведущая (режим сдвиг по типу А, порт 2аh)
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│020│mov al,b │ 1 ││каскад, ICW4 │
│021│out 2ah, al │ 1 ││загрузка ICW1 │
│022│mov al,b │ 1 ││адрес IDT 00h │
│023│out 2bh, al │ 1 ││загрузка ICW2 │
│024│mov al,b │ 1 ││ведомая на 6 │
│025│out 2bh, al │ 1 ││загрузка ICW3 │
│026│mov al,b │ 1 ││i8086, ведущая │
│027│out 2bh, al │ 1 ││загрузка ICW4 │
│028│mov al,b │ 1 ││ │
│029│out 2ah, al │ 1 ││загрузка OCW3 │
│02A│ret │ 1 ││ │
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
- ведомая (IRQ ведущего – 6, режим фиксированных приоритетов, порт 38h)
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│030│mov al,b │ 1 ││каскад, ICW4 │
│031│out 38h, al │ 1 ││загрузка ICW1 │
│032│mov al,b │ 1 ││адрес IDT 40h │
│033│out 39h, al │ 1 ││загрузка ICW2 │
│034│mov al,b │ 1 ││ведомая на 6 │
│035│out 39h, al │ 1 ││загрузка ICW3 │
│036│mov al,b │ 1 ││i8086, ведомая │
│037│out 39h, al │ 1 ││загрузка ICW4 │
│038│ret │ 1 ││ │
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
ППОП ведущей и ведомой БИС
- ППОП ведущей (режим сдвиг по типу А, порт 2аh, ведомая на IRQ 6)
┌───┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│ N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├───┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│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 2ah, al │ 1 ││загрузка OCW2 │
│078│pop ax │ 1 ││восстановление AL │
│079│iret │ 1 ││возврат │
└───┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘
- ППОП ведомой (IRQ ведущего – 6, режим фиксированных приоритетов, порт 38h)
┌──┬──────────────────────────────┬─────┬────────┬──────────────────────────────┐
│N%│ Команда │^INTA│ IRQ7-0 │ Комментарии │
├──┼──────────────────────────────┼─────┼────────┼──────────────────────────────┤
│00│sti │ 1 ││разрешить прерывания │
│01│push ax │ 1 ││сохранение AL │
│02│mov al,1 │ 1 ││обработчик │
│03│add al,16 │ 1 ││обработчик │
│04│dec al │ 1 ││обработчик │
│05│mov al,b │ 1 ││сброс бита ISR(ведомый) │
│06│out 38h, al │ 1 ││запись OCW2 │
│07│in al, 38h │ 1 ││читаем ISR │
│08│test al, 00h │ 1 ││проверяем на рав. 0 │
│09│jnz 0ch │ 1 ││если не равно то к 0c │
│0A│mov al,b │ 1 ││EOI | clear ISR │
│0B│out 2ah, al │ 1 ││загрузка OCW2 │
│0C│pop ax │ 1 ││восстановление AL │
│0D│iret │ 1 ││ │
└──┴──────────────────────────────┴─────┴────────┴──────────────────────────────┘


