Організація переривань

Зміст

ЛЕКЦІЯ 9. 1

Переривання. 1

ЛЕКЦІЯ 10. 7

Прямий доступ до пам'яті (ПДП) 7

ЛЕКЦІЯ 11. 12

Клавіатура та індикація. 12

ЛЕКЦІЯ 12. 18

Мікропроцесор КР1810ВМ86 (8086) 18

ЛЕКЦІЯ 13. 24

Система команд та методи адресації в мікропроцесорі КР1810ВМ86. 24

ЛЕКЦІЯ 14. 30

Мультипроцесорні системи. 30

ЛЕКЦІЯ 15. 33

Робота зі співпроцесором. 33

ЛЕКЦІЯ 16. 39

Тенденції розвитку мікропроцесорної техніки. 39

ЛЕКЦІЯ 17. 44

Деякі принципи роботи сучасних мікропроцесорів та ЕОМ.. 44

ЛЕКЦІЯ 18. 48

Віртуальна пам'ять Мікропроцесор 80286. 48

ЛЕКЦІЯ 19. 52

Мікропроцесори 80386 і 80486. 52

ЛЕКЦІЯ 20. 57

Поняття про RISC-процесори. Процесори п'ятого та шостого поколінь. 57

ЛЕКЦІЯ 21. 61

Діагностика несправностей у мікропроцесорних. 61

системах. 61

ЛЕКЦІЯ 9

Переривання

Обмін за перериваннями виявляється найбільш ефективним при роботі із (ЗП), дані від яких можуть з'явитися в будь-який момент часу. У цьому разі ініціатива на обмін виходить від ЗП, котрий при бажанні обміну сам виставляє запит на обслуговування. Мікропроцесор виконує якусь "фонову" програму, але при появі запиту від ЗП тимчасово припиняє її виконання й переключається на обслуговування зовнішнього пристрою. Закінчивши обслуговування, мікропроцесор знову повертається до виконання перерваної фонової програми.

Переваги такого способу очевидні: між порівняно рідкими запитами на переривання процесор не простоює, а виконує корисну роботу. Недоліком цього методу є, однак, деяка складність програмної та апаратної частин.

Організація переривань

Усе починається з того, що ЗП виставляє сигнал високого рівня (логічну одиницю) на вхід INT мікропроцесора. Стан на вході INT мікропроцесор перевіряє кожного разу в останньому такті чергової команди по передньому фронту тактового імпульсу F2. v відповідь на виявлений запит мікропроцесор виставляє на ШД cj.obo стану DO,D1,D5 = 1 (23Н). Цим мікропроцесор повідомляє про свій намір виконувати приймання та обробку переривання. Біт DO = 1 означає "підтвердження переривання", D1 = 1 те, що в даному циклі буде відбуватися введення (читання) інформації, a D5 = 1 те, що це є приймання першого байта команди.

Сигнал "підтвердження переривання" DO = 1, котрий має назву INTA, подається на контролер ЗП, який і вступає в обмін даними з мікропроцесором (звичайно це буває інвертований сигнал INTA). Ці дані будуть оброблятися мікропроцесором за підпрограмою обробки переривань, яка повинна бути заздалегідь закладена в пам'ять мікропроцесора.

Але перш ніж розпочати обробку переривання треба зафіксувати всі відомості про перервану фонову програму з тим, щоб по шкінченні обробки переривання мати змогу знову повернутися до

неї. Для цього в стек записується вміст лічильника команд (у котрім на момент початку переривання було записано адресу наступної команди фонової програми). Замість цього в лічильник команд заноситься адреса команди, з якої починається підпрограма обробки переривань. Далі, оскільки для виконання цієї підпрограми може знадобиться акумулятор та регістр ознак (регістри А та F), вміст цих регістрів також заноситься в стек. Лише після цього стає можливим уведення даних із ЗП і старт підпрограми обробки переривань цих даних.

По закінченні підпрограми обробки переривань вміст А та F регістрів і вміст лічильника команд повертаються зі стеку на свої місця і виконання фонової програми продовжується. Тому кожна підпрограма обробки переривань має починатися з команди PUSH PSW і закінчуватися командою POP PSW. Якщо ж у підпрограмі будуть задіяні також робочі регістри В, С, D, Е, Н та L, у котрих може бути інформація з фонової програми, то вміст цих регістрів також бажано на час обробки переривань зберігати в стеку.

Друге зауваження полягає в тому, що за сигналом RESET (з якого починається робота МП), переривання блокуються. Як знак цього на виході INTE мікропроцесора встановлюється 0. Тому, якщо передбачається можливість переривань, у фонову програму повинен бути заздалегідь закладений дозвіл на переривання, який забезпечується командою ЕІ. За цією командою тригер дозволу на переривання (який є в мікропроцесорі) встановлюється у 1 і мікропроцесор стає готовим до приймання запитів на переривання. Слід мати на увазі, що після підтвердження запиту на переривання (сигнал INTA) вищезгаданий тригер знову ж таки повертається в нуль, результаті чого МП виявляється заблокованим і для обслуговування наступного переривання його треба знову розблокувати командою ЕІ. Тому ця команда ставиться звичайно на початку кожної підпрограми переривань, одразу вслід за вищезгаданою командою PUSH PSW.

Інколи при виконанні будь-якої особливо важливої фонової програми (або її фрагмента) буває необхідним виключити можливість її переривання. Тоді у фонову програму вводиться команда DI - заборона на переривання, яка діятиме до появи в програмі команди ЕІ - дозволу на переривання.

Кожна підпрограма обробки переривань повинна закінчувл командою RET - виходом з підпрограми, за якою в лічильник команд повертається зі стеку адреса фонової програми, яка була перервана.

Команда рестарту

Розглянемо тепер докладніше, як відбувається перехід до підпрограми обслуговування переривання. Після того, як один із зовнішніх пристроїв видав запит на переривання на вхід мікропроцесора ГМТ, останній видає сигнал підтвердження INTA і переходить у режим переривань, звільняючи ПІД. За сигналом INTA на ШД треба встановити вектор переривань - адресу комірки пам'яті, у котрій зберігаються відомості про адресу початку підпрограми обробки переривань.

Вектори переривань визначаються при одержанні мікропроцесором від ЗП команди рестарту, передбаченої в системі команд МП-80. Мнемоніка цієї команди є RST N, де N - номер рестарту. Усього в МП-80 вісім таких команд. За кожним ЗП закріплюється своя команда рестарту, отже МП-80 може обслуговувати вісім зовнішніх пристроїв. Команда рестарту формується та виводиться на ПІД із контролера ЗП, який дав запит на переривання.

У двійковому запису команда рестарту має вигляд Imsk 111, де літери msk означають номер рестарту у двійковому за* Ісу і, отже, номер ЗП, котрому він відповідає. Так, наприклад, команді RST 2 відповідає код 11010111, тобто D7H. За номером рестарту мікропроцесор дізнається, який саме ЗП дав запит на переривання та яку підпрограму обробки переривань слід запустити.

За командою мікропроцесор виконує такі дії:

- записує в стек чергову "дресу фонової програми. За цією адресою мікропроцесор повернеться до фонової програми по закінченні переривання;

- виставляє через лічильник команд на ША адресу 0000 0000 00ms kOOO, у котрій захований номер рестарту.

Так, наприклад, для RST 2 це буде адреса 0010Н. Це і є вектор переривань. Адреса наступного рестарту RST 3 буде 0018Н. Отже, під вектор переривань відводиться вісім комірок пам'яті, у котрих можна було б розташувати підпрограму обробки переривань. Але звичайно восьми комірок пам'яті буває для цього замало. Тому саму

трохи згодом, метод видачі контролером безпосередньо трибайтової команди з адресою підпрограми обробки переривань вживається в більш складних мікропроцесорних системах.

Розглянемо тепер докладніше, як уся ця процедура рестарту виконується апаратно. Після того, як мікропроцесор увійшов у режим переривань і його ЇІЇД звільнилась, на неї за сигналом INTA слід ввести ззовні (від контролера ЗП) команду рестарту. Це можна виконати за допомогою буферного регістра (наприклад КР580ИР82 або К589ИР12), виходи якого мають третій стан (рис. 9.2.). На вхід цього регістра стаціонарно встановлюють одиниці й нулі, що відповідають команді рестарту від даного ЗП. За командою INTA. вони виводяться на ШД. Кожний ЗП повинний мати свій відповідно закодований буферний регістр, який і входить до складу контролера цього ЗП. Замість буферного регістра можна було б використати й інші ІМС, які мають третій стан, наприклад, шинні формувачі К589АП16 або КР580ВА861.

Якщо в процесі обробки переривань будь-який інший ЗП подасть свій запит на переривання, то виконання попередньої підпрограми

буде перервано й почнеться виконання нової підпрограми від ЗП, який дав запит останній. Після закінчення цієї підпрограми мікропроцесор повернеться до виконання попередньої. Це має назву

1 У деяких книгах наводяться схеми контролерів ЗП, де виведення векторів переривань на ШД здійснюється через систему інверторів, Це є помилкою, бо звичайні інвертори не мають третього стану.

підпрограму обробки переривань розташовують де-небудь у вільній області пам'яті, а за адресою 0010Н записують лише команду безумовного переходу на цю підпрограму.

У "Мікролабі" справа ускладнюється ще й тим, що всі початкові адреси ПЗП від 0000 до 03FF зафіксовані за оперативною системою "Монітора" й запис до цих комірок неможливий. Тому в "Мікролабі" команда переходу на початкову адресу підпрограми обробки

переривань (яка може бути довільною) записується в комірки пам'яті службової області ОЗП, по три комірки на вектор. Так, наприклад, для RST 2 передбачено комірки з адресами 83D1, 83D2, 83D3. Для RST 3 ці адреси починаються з 83D4.

А за адресами, що встановлюються командами RST, фіксовано записані початкові адреси вказаних груп. Так, наприклад, за адресою 0010Н записана команда СЗ D1 83, тобто безумовний перехід до адреси 83D1 (останні п'ять комірок пам'яті в ОЗП від 0013Н до 0017 не використовуються і в них записано FF). Таким чином, виклик підпрограми переривань має в "Мікролабі" багатоступеневий характер (рис. 9.1): команда рестарту від ЗП установлює вектор переривань у області ПЗП, по ньому встановлюється адреса "внутрішнього" вектора в службовій області ОЗП, і нарешті, за записаною там адресою відбувається безумовний перехід до підпрограми обробки переривань.

Можна звичайно запитати, навіщо така складність? Чи не міг би контролер зовнішнього пристрою одразу видавати команду виклику підпрограми обробки переривань, указуючи її початкову адресу? Так можна було б зробити, але це надто ускладнило

б апаратну частину контролера ЗП, який мав би видавати трибайтну команду адреси підпрограми, тоді як у нашому варіанті йому достатньо видавати однобайтну команду рестарту. Як ми побачимо

вкладених переривань. Таких вкладень у МП-80 може бути аж до восьми. Але це буває незручним і для того, щоб якось упорядкувати черговість обслуговування переривань від кількох ЗП, за цими ЗП слід встановити якійсь пріоритет обслуговувань.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: