Page 291 - 4503
P. 291

через  вентиль  М2–НЕ,  який  у  даному  випадку  відіграє  роль
           програмованого інвертора (згадаємо розділ 2.7).
                Незважаючи  на  те,  що  ознаки  встановлюються
           зовнішніми щодо процесора подіями, гасити їх  потім можна
           тільки  програмно.  При  обробці  переривань  життєво
           необхідним  є  скинення  ознаки  перед  поверненням  із
           процедури    обробки  переривань  —  інакше    все  ще
           встановлена  ознака  знову  стане  запитом  на  переривання.
           Наприклад  для  скинення  ознаки  зовнішнього  переривання
           слід  скористатися  командою    bcf    INTCON,  INTF.
           Програмно установити ж ознаки  можна як побітно, так і через
           копіювання  констант  у  регістр.  Якщо  потрібно  дозволити
           переривання наприклад, як від лапки INT, так і від Таймера 0,
           то  доведеться  встановити  біти  7,5,  і  4  тобто  виконати
           команди:
                movlw b’10110000’
                movwf INTCON
                Дозволяючі біти можна скинути так само, як і звичайні.
                Що  стосується  мікроконтролера    PIC16F84,  то  у  цієї
           моделі  переривання  може  генеруватися  також  після
           завершення циклу запису  у внутрішню  EEPROM  —  пам'ять
           даних. У регістрі INTCON для ознаки EEIF не вистачило місця,
           тому  її  розмістили  у  біті  4  реґістра  керування  пам’яттю  —
           EECON1. Більш детально  про нього йтиметься дещо пізніше.
                Окремо варто згадати за так званий сигнал пробудження,
           котрий,  як  бачимо  з  рисунка  9.3,  не  вимагає  установки  GIE.
           Пробудження — це переведення мікроконтролера із сплячого
           режиму,  в  якому  він  перебував  завдяки  команді  sleep.
           Вказаний режим може застосовуватись, коли наприклад десь у
           малодоступному місці  (приміром на дні озера) впродовж року
           треба  щогодини  контролювати  температуру.  Очевидно,  що
           час  на  обробку  даних  і  їх  реєстрація  є  гранично мізерним  у
           порівнянні  із  часом  простою.  Тому  після  кожного  сеансу


                                         291
   286   287   288   289   290   291   292   293   294   295   296