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
   291   292   293   294   295   296   297   298   299   300   301