Page 296 - 4503
P. 296
Спочатку копія робочого регістру зберігається у _work.
Варто пригадати, що команда movwf не впливає на біти
регістра STATUS. Потім копія регістра STATUS зберігається у
регістрі _status. Незважаючи на те, що найпростішим
видається копіювання регістра STATUS у W застосовуючи
команду movf, однак вона змінює стан ознаки Z. Власне
тому, замість неї застосовують команду swapf, яка жодним
чином не змінює вмісту регістра STATUS, але переставляє
місцями його молодший і старший пів–байт. Однак це можна
виправити під час відновлення стану регістрів, шляхом
повторно застосування цієї команди.
Процес збереження та відновлення стану внутрішніх
реґістрів (цей внутрішній стан називають контекстом
програми) при вході і виході із підпрограми обробки
переривання це — переключення контексту. Слід
дотримуватися того, щоб комірки пам’яті призначені для
збереження контексту не використовували для будь–чого
іншого.
9.2.3.2 Основний код
Гаситься (скидається) ознака переривання INTF регістра
INTCON, для уникнення повторного переходу до обробки
переривань після повернення у основну програму. За
наявності декількох джерел переривання на цьому етапі
опрацювання (підпрограми) відбувається перевірка
відповідних ознак переривання, кожна з яких у подальшому
може бути скинута на початку відповідної процедури
(функції) опрацьовувача.
У робочій секції основного коду просто збільшується на
одиницю (inc EVENT, f) вміст регістра EVENT. Це ж бо і є
основна ціль функції переривання у задачі 9.1.
296