bueno por el antirrebotes este puede ayudar primero inicializas variables claro
delay_32ms
incf RETARDO,F ;+1
btfss RETARDO,5 ;Checa si son 32ms
goto delay_32ms
clrf RETARDO ;Ya son 32ms
rutinaxx
btfss PORTB,0
goto delay_32ms
incf cnt_rutinas,F
movlw 0x04
xorwf cnt_rutinas,W
btfss STATUS,Z
goto delay_32ms
call rutina_conteo
clrf cnt_rutinas
goto delay_32ms
aqui por ejemplo esta en loop despues del retardo checas el estado del pin RB0 si vale 1 que es lo que esperas incrementa un contador para obtener que numero quieres para ejecutar tu rutina en tu caso pones que 4 cuando ya sean 4 inc. se hace una comparacion y se checa el resultado del registro estado por ultimo llamas a la rutina que tu quieres y limpias el registro espero te sirva con respecto a usar cualquier pin y que cuente el tmr0 no se si se puede pero yo no le veo mucho sentido mejor explicate un poco mas saludos