Podes hacerlo metiendo una porción en asembler o algo así por ejemplo (configuracion del modo captura)
//------------------------------------------------------------------------------------
//definiciones
#byte CCP1CON =0x17
#byte TODAS_INT_ENABLE = 0x8B //habilitar todas las interrupciones
#bit CCP1M3 = CCP1CON.3
#bit CCP1M2 = CCP1CON.2
#bit CCP1M1 = CCP1CON.1
#bit CCP1M0 = CCP1CON.0
#bit CCP1ENABLE = 0x8C.2
#bit FLANCOS_Asen_O_Desen = 0x81.6 // 1->rising 0->falling
char i=0;
char bcd[10]={0b0000,0b0001,0b0010,0b0011,0b0100,0b0101,0b0110,0b0111,0b1000,0b1001};//BCD 0-9
boolean flanco=0;
//----------------------------------------------------------------------------------------
#INT_EXT
void interrupcion_ext(){
flanco=!flanco; //complementa valor de modo
if(!flanco) CCP1M0 = 0;
// setup_ccp1(CCP_CAPTURE_RE); //SI -> ccp1 modo captura configurado flanco ascendente
else CCP1M0 = 1;
// setup_ccp1(CCP_CAPTURE_FE); //NO -> ccp1 modo captura configurado flanco descendente
}
espero te sirva. Saludos.