Программная эмуляция прерывания в прерывании на PIC16F87x (а лучше взять PIC18xxxx) ;***************************************************************
;*************** Процедура обработки прерываний ****************
;***************************************************************
PROG_INT
;проверка на прерывание от TMR0, если нет, то переход на TMR1_INT
btfss T0IF,INTCON
goto TMR1_INT
TMR0_INT
movwf TEMPW
swapf STATUS,w
bcf STATUS,RP0
bcf STATUS,RP1
movwf TEMPST
movf PCLATH,w
movwf PCLATH_TEMP
clrf PCLATH
;Разрешаем прерывания и запрещаем прерывание от TMR0
bcf T0IE,INTCON
bsf GIE,INTCON
................... ;обработка прерывания отTMR0
;Запрещяем прерывания и разрешаем прерывание от TMR0
bcf GIE,INTCON
bsf T0IE,INTCON
bcf T0IF,INTCON
movf PCLATH_TEMP,w
movwf PCLATH
swapf TEMPST,w
movwf STATUS
swapf TEMPW,f
swapf TEMPW,w
retfie
TMR1_INT
movwf TEMPW1
swapf STATUS,w
bcf STATUS,RP0
bcf STATUS,RP1
movwf TEMPST1
movf PCLATH,w
movwf PCLATH_TEMP1
clrf PCLATH
................... ;обработка прерывания отTMR1
bcf TMR1IF,PIR1
movf PCLATH_TEMP1,w
movwf PCLATH
swapf TEMPST1,w
movwf STATUS
swapf TEMPW1,f
swapf TEMPW1,w
retfie
;***************************************************************
;************ Конец процедуры обработки прерывания *************
;***************************************************************