Робота системи обслуговування переривань
Прапори переривань опитують в момент S5P2 кожного МЦ. Ранжирування переривань за рівнем пріоритету виконується протягом наступного МЦ, і вибирається переривання, яке необхідно обслужити в даний момент. rn Система переривань формує апаратно команду виклику LCALL і завантажує її в регістр команд IR. Один з адрес векторів переходу на процедуру обробки переривання використовується як адреса виклику (ріс.16.2 або ріс.29 в комплекті). Вектора переходу утворюють ділянки по вісім байт в пам'яті програм. На цих ділянках можуть бути: rn - команда JMP переходу на відповідну процедуру обробки переривання або команди умовних переходів на кілька процедур (наприклад, для УАПП - по TI або RI); rn - коротка (до восьми байтів) процедура обслуговування переривання. rn Наприклад : нехай зафіксовано запит переривання від TF1. Логіка передачі управління показана схемою на ріс.16.5 або ріс.30 в комплекті. rn rn Процедура обробки переривання зазвичай починається командами PUSH для збереження в стек важливої інформації з регістрів (PSW, ACC, DPRT і т.д.), а завершується відновленням з стека їх вмісту (команди POP) у зворотному порядку. Останньою є команда RETI, за якою в (РС) завантажується збережена точка повернення в основну програму і знімається блокування переривання щойно обслужених рівня. Таким чином, всередині процедури обробки переривання не може обслуговуватися переривання, яке викликало дану процедуру (зрозуміло, у випадку його появи). rn У випадку, якщо необхідно обробляти сигнали зовнішніх переривань від декількох джерел (більше двох), можна скористатися простою схемою (ріс.16.6). Згідно з нею, при виникненні запиту на переривання від будь-якого пристрою (навіть від декількох одночасно!) Буде сформований єдиний запит на вході # INT1. Процедура обробки цього загального запиту повинна програмним шляхом провести опитування всіх входів Р1.0 ... Р1.3, визначити пристрій (або пристрою), яка зробила виклик, вибрати джерело з вищим пріоритетом і провести відповідну обробку події, що викликала переривання основної програми. rn rn Таким чином, подібна схема вимагає реалізації протоколу обробки переривання з програмним пошуком джерела. (Студентам пропонується самостійно розробити програмний фрагмент реалізації такого протоколу).
|