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

 
 
 
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Русский | Українська



На правах рекламы:



Rambler's Top100 Рейтинг@Mail.ru
Микропроцессоры и микроконтроллеры :: Принципи програмування 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

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













При использовании любых материалов с сайта обратная ссылка на сайт Микропроцессоры и микроконтроллеры обязательна.