Hola Halcon_de_Fuego, no hay por que desanimarse! Solo que a mi parecer es más preciso con la opción del CCP. Como te ha reiterado AngelGris, también es posible el tacómetro con el Timer0. He reformado un poco tu código para hacerlo funcionar con las sugerencias que te hemos hecho:
A4: entrada para pulsos del motor
A2 y A3 DIP swuitch asi:
A2 abierto, A3 abierto: motor de 4 ciclindros
A2 cerrado, A3 cerrado: motor de 4 ciclindros (esta podría ser una opción para otro tipo de motor)
A2 cerrado, A3 abierto: motor de 6 ciclindros
A2 abierto, A3 cerrado: motor de 8 ciclindros
Como podrás ver le he puesto al circuito unas resistencias pullup en A2 y A3 (lo mismo deberías hacer con A1 y A2), sin ellas en Proteus no te muestra problemas pero en 'la vida real' todos los que quieras.
Me parece que tendrías que cambiar la configuración en Timer0 ya que veo que a altas rpms, la lectura en counter se pasa de 255 (8 bits) con sus obvias consecuencias. Bueno, nos comentas si tienes alguna duda.
Saludos!