¿Perdón mi ignorancia , pero para que medir RPM si lo que se busca es medir metros? El programa se simplifica , hay que usar el TMR0 con señal de clock externa , en el registro TMR0 se encontrara un valor que se incrementará con cada pulso de entrada. Cuando el registro pasa de FF a 00 se produce una interrupcion así podemos usar registros de 16 bits , luego deberíamos aplicar un factor de escala por el cual se le da un valor en m. o cm. a cada pulso. Esos registros habra que compararlos con el que está preseteado por el usuario. Hay varias rutinas en juego: Para leer el teclado , para hacer andar el display, para contar y comparar.
En este enlace perteneciente a la página de Microchip tenes una serie de notas de aplicacion que pueden serte útiles:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1469
Saludos