Thanks for your help and also Taylors email. I inserted CCP1CON flags and also had a couple others wrong. I am learning alot about how to read the datasheets changing chips.

I am using an external 20 MHZ OSC

The code below works except it isn't as close as when I was using the 877A chip. I have an rpm frequency generator with a digital readout that I am using to check the rpm with the 4620 chip. Following is data

RPM with generator/RPM with 4620
4000/3975
5000/4965
6000/5960
7000/6955
8000/7950
9000/8945
10000/9935

All chip numbers are 99.35% appr from RPM generator. When I used the 877A all numbers matched up dead on.

Any ideas?

Code:
DEFINE OSC 20
Prefix          con     $FE           ' needed before each command
LcdCls          CON     $51           ' clear LCD (use PAUSE 5 after)
CursorPS        con     $45           'Cursor Position
Capture         VAR     PIR1.2		    ' CCP1 capture flag CCP1IF
Overflow        VAR     PIR1.0	    	' Timer1 overflow flag TMR1IF:
RPM             var     word
period          var     Word
TotalTime       var     word      'Holds seconds and tics 

LCD             VAR     PortC.6    'LCD output
Gate1           Var     PortC.1
Gate2           var     PortD.1
Gate3           var     PortD.2
Gate4           var     PortD.3
Gate5           var     PortD.6
Gate6           var     PortD.7
Gate7           var     PortD.5
Gate8           var     PortD.4
WOT             var     PortB.0
 
ADCON0 =0       'A/D Off
ADCON1.3=1      'All AN channels digital
ADCON1.2=1      '''
ADCON1.1=1      '''
ADCON1.0=1      '''
TRISE.0=1       'EO input
TRISE.1=1       'E1 input
CCP1CON = %00000110  ; Capture mode, every 4th rising edge 0110 
T1CON.7=1     'enable timer  16 bit `   
T1CON.6=1     'Timer1 OSC
T1CON.5=1     '1:4 prescaler
T1CON.4=0     '1:4 prescaler
T1CON.3=0     'Timer1 OSC off
T1CON.2=0     'sychro clock
T1CON.1=0     'internal clock
T1CON.0=0     'stop timer

pause 10
SEROUT2 LCD,84, [Prefix, LcdCls]

Include "modedefs.bas"	' Mode definitions for Serout
SEROUT2 LCD,84, [Prefix,CursorPS,0,"RPM test"]
pause 500

Loop:
TMR1H = 0    'Clear 8-bit register                              
TMR1L = 0    'Clear 8-bit register
capture = 0  'Clear Timer
'SEROUT2 LCD,84, [Prefix,CursorPS,0,"Capture ", dec Capture," ",DEC Period]
Start:
      If Capture = 0 then
         Goto Start
      endif

      T1CON.0=1
      Capture = 0 
      
CaptureLoop:
  If Capture = 0 then 
    'SEROUT2 LCD,84, [Prefix,CursorPS,0,"Dont Capture ", dec Capture," ",DEC Period]
    Goto CaptureLoop
  endif
T1Con.0=0  
period.LowByte=CCPR1L
period.HighByte=CCPR1H

RPM = 10000
RPM = RPM * RPM ' 100,000,000
RPM = DIV32 period ' 100,000,000 / RevCount
RPM = RPM * 60 ' Per minute
RPM = DIV32 400
RPM = (RPM*5)

SEROUT2 LCD,84, [Prefix,CursorPS,20,"RPM ",dec5 RPM, " ", DEC Period]
  
Gosub ClearTimer1
 
Goto Loop
 
ClearTimer1:
If Capture = 0 then
  'SEROUT2 LCD,84, [Prefix,CursorPS,40,"Don't Clear Timer ", DEC Period]
  goto ClearTimer1
endif
''SEROUT2 LCD,84, [Prefix,CursorPS,40,"Clear Timer ", DEC Period]
TMR1H = 00
TMR1L = 0
Capture = 0
Overflow = 0 
return