Here is the rest of the Code:

Code:
Main:

IF T1CON.0 <> 0 And I = 0 THEN
  LCDOUT $FE,1
  LCDOUT $FE,$C0,"   MEASURING"
  I = 1
  GOTO LCDEND 
ENDIF

IF T1CON.0 <> 0 THEN LCDEND
IF T1CON.0 = 0 AND J = 0 THEN

'********** CONVERT COUNTS, OVERFLOWS to SECONDS **********
@  MOVE?LP  _OVRFLO, _OVFLS64
@  MATH_MUL  _OVFLS64, _BITS1664, _OVFLS64M
   COUNTS32 = (COUNTS-10)*2           ' 10 TICS START CORRECTION,  200 nS PER COUNT
@  MOVE?LP  _COUNTS32, _COUNTS64
@  MATH_ADD  _OVFLS64M, _COUNTS64, _TSEC64

' ********** CONVERT SECONDS TO MINUTES **********
@  MATH_DIV  _TSEC64, _CONVSEC64, _TMIN64
@  MOVE?PL  _TMIN64, _TMIN

' ********** GET INTEGER SECONDS **********
   CC32 = 10000000
@  MOVE?LP  _CC32, _CC64
@  MATH_MUL  _TMIN64, _CONVSEC64, _AA64
@  MATH_SUB  _TSEC64, _AA64, _BB64
@  MATH_DIV  _BB64, _CC64, _TSECINT64
@  MOVE?PL  _TSECINT64, _TSECINT

' ********** GET DECIMAL SECONDS **********
@  MATH_MUL  _TSECINT64, _CC64, _AA64
@  MATH_SUB  _BB64, _AA64,  _TSECDEC64
@  MOVE?PL  _TSECDEC64, _TSECDEC

' ********** CALCULATE SPEED (FPS) **********
@  MATH_DIV  _DISTFT64M, _TSEC64, _FPS64

' ********** GET INTEGER FPS **********
   CC32 = 1000000
@  MOVE?LP  _CC32, _CC64
@  MATH_DIV  _FPS64, _CC64, _FPSINT64
@  MOVE?PL  _FPSINT64, _FPSINT

' ********** GET DECIMAL FPS **********
@  MATH_MUL  _FPSINT64, _CC64, _BB64
@  MATH_SUB  _FPS64, _BB64,  _FPSDEC64
@  MOVE?PL  _FPSDEC64, _FPSDEC

' ********** CONVERT FPS to MPH **********
   AA32 = 15
@  MOVE?LP  _AA32, _AA64
   BB32 = 22
@  MOVE?LP  _BB32, _BB64
@  MATH_MUL  _AA64, _FPS64, _CC64
@  MATH_DIV  _CC64, _BB64, _MPH64

' ********** GET INTEGER MPH **********
   AA32 = 1000000
@  MOVE?LP  _AA32, _AA64
@  MATH_DIV  _MPH64, _AA64, _MPHINT64
@  MOVE?PL  _MPHINT64, _MPHINT

' ********** GET DECIMAL MPH **********
@  MATH_MUL  _MPHINT64, _AA64, _BB64
@  MATH_SUB  _MPH64, _BB64,  _MPHDEC64
@  MOVE?PL  _MPHDEC64, _MPHDEC

' ********** DISPLAY RESULTS **********
LCDOUT $FE,1
LCDOUT $FE,$80," ",DEC2 TMIN,":",DEC2 TSECINT,".",DEC7 TSECDEC
LCDOUT $FE,$90, DEC4 FPSINT,".",DEC6 FPSDEC," FPS"
LCDOUT $FE,$D0, DEC4 MPHINT,".",DEC6 MPHDEC," MPH"

DEBUG "OVRFLO: ",DEC10 OVRFLO,13,10
DEBUG "COUNTS: ",DEC10 COUNTS,13,10,13,10
DEBUG "TIME: ",DEC2 TMIN,":", DEC2 TSECINT,".",DEC7 TSECDEC,13,10
DEBUG "SPEED: ",DEC4 FPSINT,".",DEC6 FPSDEC," FPS",13,10
DEBUG "SPEED: ",DEC4 MPHINT,".",DEC6 MPHDEC," MPH",13,10,13,10

J = 1
ENDIF
GOTO LCDEND

LCDEND: 
  PAUSE 25
    @    INT_ENABLE  CCP1_INT     ; Start new capture
GOTO Main

'---[CCP1 - interrupt handler]------------------------------------------
Capture:
  IF CCP1CON = %00000101 THEN      ' If rising edge capture then
     HIGH LED            ' Turn on LED to Indicate Measuring
     TMR1L = PRESET                ' Clear Timer1 counts with Preset (High)
     TMR1H = 0             ' Clear Timer1 counts (LOW)
     T1CON.0 = 1                   ' Turn Timer1 on at rising edge capture
     OVRFLO = 0                   ' Zero Over flow counts
     COUNTS = 0                   ' Zero remainder
     CCP1CON = %00000100           ' Switch to falling edge capture
     PIR1.0 = 0                    ' Clear Timer1 overflow flag before enable
   I = 0 : J = 0
     @    INT_ENABLE  TMR1_INT     ; Enable Timer 1 Interrupts 
     GOTO OVER_CCP                 ' Done, exit
  ENDIF
   
  IF CCP1CON = %00000100 THEN      ' If falling edge capture then
     T1CON.0 = 0                   ' Stop Timer1
     CCP1CON = %00000101           ' Switch back to rising edge capture
     @    INT_DISABLE  TMR1_INT    ; Disable Timer 1 Interrupts
     @    INT_DISABLE  CCP1_INT    ; Disable CCP1 Interrupts
     COUNTS.LowByte = TMR1L       ' Get remaining Timer1 counts on falling edge (Low Byte)
     COUNTS.HighByte = TMR1H      ' Get remaining Timer1 counts on falling edge (High Byte)
  LOW LED             ' Turn off LED 
  ENDIF

OVER_CCP:
@ INT_RETURN

'---[TMR1 - interrupt handler]---------------------------------------------
Timer1:
OVRFLO = OVRFLO + 1
@ INT_RETURN
END
It wouldn't all fit in a single post

--Bob