Data_start
bsf T1CON,TMR1ON ;turn TMR1 on |B0
movlw b'00000101' ;
movwf CCP1CON ;CCP1 rising capture |B0
bcf PIR1,CCP1IF ;flag must be cleared after mode |B0
btfss PIR1,CCP1IF ;test CCP1 interrupt flag (interrupt not enabled)
goto $-1
movf CCPR1H,w ;start time high byte
movwf CCP_T1H ;save value in shadow register
movf CCPR1L,w ;start tiem low byte
movwf CCP_T1L ;save value in shadow register
bcf CCP1CON,0 ;change interrupt flag to falling edge
bcf PIR1,CCP1IF ;clear flag
btfss PIR1,CCP1IF ;test CCP1 falling edge interrupt flag
goto $-1
movf CCPR1H,w ;stop time high byte
movwf CCP_T2H ;save value in shadow register
movf CCPR1L,w ;stop time low byte
movwf CCP_T2L ;save value in shadow register
bsf CCP1CON,0 ;change interrupt flag to rising edge
bcf PIR1,CCP1IF ;clear flag
btfss PIR1,CCP1IF ;test for rising edge (end of period)
goto $-1
movf CCPR1H,w ;start time high byte
movwf CCP_T3H ;save value in shadow register
movf CCPR1L,w ;start tiem low byte
movwf CCP_T3L ;save value in shadow register
bcf CCP1CON,0 ;change interrupt flag to falling edge
bcf PIR1,CCP1IF ;clear flag
bcf T1CON, TMR1ON ;stop TMR1