Hola, es un placer poder ayudarte. Lo puedes hacer con la interrupcion del timer0 y colocando el pulsador en una de las lineas del RB4-7. Cuando pulse el pulsador entra en la interrupcion del pulsador, esperas 20ms para el antirebote y miras si el pin esta a 0 o a 1 (pulsado o no), si esta pulsado, pones a funcionar el timer0 lo mas lento posible, habilitas su interrupcion, reseteas el valor del timer (TMR0) y pones un contador a decrementar, si el cristal es de 4mhz saltara la interrupcion del timer0 15 veces por segundo, entonces para 0.5s tiene que estar mas o menos a 7 el contador. Cada vez que salte la irq del timer decrementas el contador y sales, y cuando el contador este a 0 entonces desactivas la TOIF y los demas registros del timer no te preocupes.
Cuando suelte el pulsador entrara en la rutina de atencion de nuevo por cambio de estado en las lineas del RB4-7 y miras si la interrupcion del timer esta activada (bit T0IF a 1) eso significa que no ha pasado el medio segundo y por lo tanto es una pulsacion rapida. Si por contrario cuando entre al soltar el pulsador el timer ya esta apagado, es que ha pasado medio segundo desde que se pulso y por lo tanto es una pulsacion larga.
Espero que te sirva.
Un saludo.