Gerardo, como el código no esta mal. Parece que solo quieres saber como funcionan las interrupciones, los flancos no tienen que ver con RBIF. Como lo menciono KillerJC solo es por cambio de estado, si por alguna razon se activa una interrupcion por otro medio o periferico ira directo a tu rutina INT7. Lo que te sugiero es:
En el vector de reset:
0RG 0X04
BTFSS INTCON,RBIF
RETFIE
BTFSS PORTB,X
Con esto, sabras que si entro por cambio de estado. De lo contrario se puede estar desbordando el timer o alguna otra interrupción y puede causar error. Desde mi punto de vista es lo primero que debes hacer, asegurarte de que si esta entrando al ISR vector por donde tu lo has configurado.
Retomando el comentario de Killer, en aplicaciones reales es muy complicado que requieras retardos para atender rutinas, y lo de guardar registros W,STATUS y PCL al entrar y regresarlos al estado orginal antes de salir es inprecindible.
Saludos