Page 304 - 4503
P. 304

Приклад       9.1     Пріоритетність         опрацювання
           переривань

            bsf STATUS, PR0  ;переключаємось на БАНК 1
            btfsc INTCON,1   ; перевіряємо ознаку
                               ;зовнішнього переривання
            goto EXTERN  ; якщо встановлений, то
           ;переходимо до  опрацювання зовнішньої події
           btfsc         INTCON,2;          перевіряємо            ознаку
           ;переривання від таймера
            goto  TIMER      ;  якщо  встановлений,  то
           ;переходим до відповідного опрацьовувача
            btfsc        INTCON,0;           перевіряємо           ознаку
           ;переривання по зміні вмісту порта В
                goto  CHANGEB  ;  якщо  встановлений,  то
           ;переходим до відповідного опрацьовувача
           btfsc       EECON,4         ;     перевіряємо           ознаку
           ;переривання від EEPROM
           goto       EEPROM_WR;якщо            встановлений,           то
           ;переходимо до відповідного опрацьовувача
           PRO_1
            bCf STATUS, PR0;переключаємось на БАНК 0
                 retfie

                     Порядок  опитування  визначає  рівень  пріоритету
           переривань,  якщо  ознаки  виставляються  одночасно.  Отож,
           якщо активізувалися певна зовнішня подія і одночасно із нею
           переривання від Таймера 0, то згідно із прикладом 9.1 першим
           опрацьовуватиметься  зовнішня  подія.  У  даному  випадку
           наявність відкладеного запиту на переривання від Таймера 0
           при поверненню в основну програму призведе до повторного
           виклику процедури обробки переривання (за умови, що за цей




                                         304
   299   300   301   302   303   304   305   306   307