прерывание от ССР в 16F873

Помогите начинающему!!!
Пытаюсь включить прерывание от модуля ССР в 16F873. Но программка туда идти не желает. Проверял в симуляторе MPLAB и протеусе.
Вроде все настройки выполнил?
Привожу упрощённый пример програмки. Если происходит захват по переднему и затем заднему фронту, включается светодиод. Объёма TMR1 хватает, чтобы из-за длительности импульса не переполниться.
Повторюсь, что это упрощённый пример, написанный за минуту. Главное, все ли настройки верны?
Подскажите в чём ошибка, в общем делал так:
Пытаюсь включить прерывание от модуля ССР в 16F873. Но программка туда идти не желает. Проверял в симуляторе MPLAB и протеусе.
Вроде все настройки выполнил?
Привожу упрощённый пример програмки. Если происходит захват по переднему и затем заднему фронту, включается светодиод. Объёма TMR1 хватает, чтобы из-за длительности импульса не переполниться.
Повторюсь, что это упрощённый пример, написанный за минуту. Главное, все ли настройки верны?
Подскажите в чём ошибка, в общем делал так:
- Код: Выделить всё
; здесь выбрал МК
Org 4
goto INTERRUPT
;---------------------------------------------------------------------------
bsf STATUS, RP0
bsf TRISC, 1 ; настроил линию порта на вход
bcf STATUS, RP0 ; выбираем банк 0
clrf CCP2CON
movlw h'05' ; захват по переднему фронту
movwf CCP2CON
movlw .1 ; делитель 1:1
movwf T1CON ; TMR1 на внутренний такт
bcf PIR1, TMR1IF
bcf PIR2, CCP2IF ; сбросим флажки прерываний
; разрешим прерывание
bsf PIE2, CCP2IE ; от модуля CCP2
bsf INTCON, PEIE ; от перифирии
bsf INTCON, GIE ; глобальное
;------------------------------------------------------------------------------------------------
CYCLE
bcf PORTB, LED_IND
btfss FLAG, LED
goto CYCLE
bсf INTCON, GIE ; глобальное запретить
bsf PORTB, LED_IND ; включить светодиод
CALL DELAY ; 1sec
bcf FLAG, LED
bсf PORTB, LED_IND ; выключить светодиод
bsf INTCON, GIE ; глобальное разрешить
goto CYCLE
INTERRUPT
movwf W_TEMP ;
swapf STATUS, W ;
clrf STATUS ; сохраняем значение
movwf S_TEMP ; W, STATUS и PCLATH
movfw PCLATH ;
movwf P_TEMP ;
btfss PIR2, CCP2IF ; флаг переполнения от ССР2 выставлен?
goto out_int
bcf PIR2, CCP2IF
btfsc FLAG, 0
goto ZF
bsf FLAG, 0
goto out_int
clrf CCP2CON
movlw h'05' ; захват по переднему фронту
movwf CCP2CON
bcf PIR1, TMR1IF
bcf PIR2, CCP2IF ; сбросим флажки прерываний
ZF
bcf FLAG, 0
clrf CCP2CON
movlw h'04' ; захват по заднему фронту
movwf CCP2CON
;bcf PIR2, CCP2IF ; сбросим флажки прерываний
bsf FLAG, LED
out_int
movfw P_TEMP ;
movwf PCLATH ;
swapf S_TEMP, W ; восстановим значения
movwf STATUS ; W, STATUS и PCLATH
swapf W_TEMP, F ;
swapf W_TEMP, W
retfie