int estado_portb_anterior=0;
int estado_portb_actual=0;
...
#int_rb
void handle_rb_int(){
estado_portb_actual=input_b();
if ((!bit_test(estado_portb_anterior,4))&&(bit_test(estado_portb_actual,4)))
{
hay_flanco_de_bajada=0;
}
if(hay_flanco_de_bajada!=0){ // He recibido Flanco de Subida
t1=get_timer1(); // Guardo en t1 el valor de TMR1 al Flanco de Subida
} else { // He recibido Flanco de Bajada
t2=get_timer1(); // Guardo en t2 el valor de TMR1 al Flanco de Bajada
set_timer1(0); // Reinicio TMR1
if(flagHayDatos==0){ // Si los datos anteriores han sido procesados ...
flagHayDatos=1; // Indico que ya hay nuevos datos de flancos para calcular
}
}
}