Микропроцессоры и микроконтроллеры

 
 
 
«Итерация свойственна человеку, рекурсия божественна.»
L. Peter Deutsch
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципи програмування MSC-51 :: Робота системи обслуговування переривань

Робота системи обслуговування переривань

Прапори переривань опитують в момент 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

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