Приветствую, Виталий!
Спасибо за подсказку! Пробовал сделать так, как ты написал, но не получилось. Сделал немного по-другому и все заработало. Вот исходник:
;******************************************************************* ; Обработчик прерываний ;******************************************************************* IRQS bcf INTCON,GIE ; Отключаем прерывания bcf INTCON,INTF ; Сбрасываем флаг от INT0
bsf STATUS,RP0 ; Банк 1 btfss OPTION_REG,6 ; goto $+3 ; bcf OPTION_REG,6 ; goto $+2 ; bsf OPTION_REG,6 ; bcf STATUS,RP0 ; Банк 0
movwf STORE_W ; Сохраняем регистры W swapf STATUS,0 ; и STATUS clrf STATUS ; в буферных movwf STORE_S ; регистрах ;------------------------------------------------------------------- ; Действия по обработке прерывания от INT0 ;------------------------------------------------------------------- bsf STATUS,RP0 ; Банк 1 btfsc OPTION_REG,6 ; goto PER1 ;
PER0 bcf STATUS,RP0 ; Банк 0 bcf TICKS,7 ; incf TICKS,1 ;
bsf TICKS,7 ; btfsc PORTB,1 ; bcf TICKS,7 ;
goto ENDIRQ ;
PER1 bcf STATUS,RP0 ; Банк 0 bcf TICKS,7 ; incf TICKS,1 ;
btfsc PORTB,1 ; bsf TICKS,7 ; ;------------------------------------------------------------------- ENDIRQ swapf STORE_S,0 ; Восстанавливаем регистры movwf STATUS ; W и STATUS из буферов swapf STORE_W,1 ; swapf STORE_W,0 ; и выходим retfie ; из обработчика прерываний