te voy a indicar fallos que cometes.... para que lo modifiques...
#include <16f877.h> //bien
#use delay(clock=4000000) //bien
#fuses NOWDT,XT //bien
#include <LCD_flexible.c> //bien
#byte portb=06 //bien
#use fast_io(c) //esta linea no hace falta
#int_rb //declaramos la interrupcion //mal, es #int_ext para captura por el pin b0
void interrupcion(void){ //bien
float t,t2,tiempo; //mal, el timer 1 es de 16bits con valores long suficiente y ademas yo las crearia globales
lcd_putc("\f"); //mal, imprimir en un lcd tiene mucho retraso de tiempo,antes de borrar la pantalla hay que tomar el valor del timer1
if(input(pin_b0)==0){ //mal, la interrupcion int_ext lo que hace es detectar un cambio de flanco, con un flag podras saber si es uno de subida o bajada
t=get_timer1();} //mal con el falg a 0x00 t1=get_timer1()
if(input(pin_b0)==0){ //mal, mejor un flag
t2=get_timer1();} //con el falg a 0xFF t2=get_timer1()
tiempo=t-t2; //ni bien ni mal todo depende del programa restante...
printf(lcd_putc,"tiempo=%3.2f msegundos",tiempo); //mal, en una interrupcion mejor nosacar valores por el lcd, mejor desdpues del retorno del flag
delay_ms(800); //mal, retardos en interrupciones mejor no hacerlos
}
void main(){
lcd_init(); //lo de abajo del delay arriba...
lcd_putc("Hola"); // "" "" ""
delay_ms(300); // "" "" ""
while(true);{ //aun no lo pongas, configura todo y despues ponlo
set_tris_b(11110001); //esto arriba
ENABLE_INTERRUPTS(INT_RB); //mal,esto arriba, es int_ext, despues debes de habilitar las interrupciones globales(activas todas las interrupciones habilitadas) esto se hace con enable_interrupts(global);
ext_int_edge(L_TO_H); //esto arriba
set_timer1(0); //esto arriba primero debes de confirurar el timer1 con setup_timer_1(...como quieras configurar....)
}
//aqui pondria yo el bucle infinito while(true){}
}
de momento esto....