Así te lo he hecho en C:
Codigo:
#include <16F876.h>
#use delay(clock=4000000)
#include <lcd.c>
int16 bajada,subida,tiempo_entre_pulsos;
#int_ccp2
void isr()
{
bajada = CCP_1;
subida = CCP_2;
tiempo_entre_pulsos = subida - bajada;
lcd_gotoxy(1,1);
printf(LCD_PUTC,"t=%5lu%s",tiempo_entre_pulsos,"us"
;
}
main()
{
set_tris_c(0xFF);
lcd_init(); // Comandos de inicialización del LCD.
setup_ccp1(CCP_CAPTURE_FE); // Configura CCP1 para capturas del TMR1
// con flancos de bajada en RC2
setup_ccp2(CCP_CAPTURE_RE); // Configura CCP2 para capturas del TMR1
// con flancos de subida en RC1
setup_timer_1(T1_INTERNAL); // El TMR1 será incrementado con la
//frecuencia interna de reloj (fosc/4)
enable_interrupts(INT_CCP2); // Habilita la interrupción por captura de
// CCP2 (PIN RC1)
enable_interrupts(GLOBAL);
while(1);
}
Debes cortocircuitar externamente RC1 y RC2 y aplicar a esta unión tus pulsos.
¡¡¡ Que cortito, eh !!!
Un saludo