Hi All,

Well, the count didn’t work as expected, seems the count function will only work for >100-150 rpm measurements, :-(. Even an event measured in 1 second, multiplied out the LCD reads it as 60rpm, ;-(

So far my code is as follows:

Code:
INCLUDE "DT_INTS-14.bas"     ' Base Interrupt System
INCLUDE "ReEnterPBP.bas"     ' Include if using PBP interrupts
INCLUDE "Elapsed_INT.bas"    ' Elapsed Timer Routines
DEFINE OSC 4 '4 MHz Osc
DEFINE LCD_COMMANDUS 2000
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 10
T1CON = %00000000 '1:1 Prescaler
TMR1H = 0  ;Clear registers
TMR1L = 0

TRISB = %00000001 'Set PortB.0 as input for Hall sensor
ADCON0 = %11100001
ADCON1 = %10000000  'Right Justify, VDD as vref
Hall var word 'VAR for hall sensor
Period var word
P1 var word
W2 var word  

ASM
INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
        INT_Handler    INT_INT,  _HallCount,   PBP,  yes
   ;     INT_Handler   TMR0_INT,  _TimePeriod,   PBP,  yes
        INT_Handler   TMR1_INT,  _ClockCount,   PBP,  yes
    endm
    INT_CREATE               ; Creates the interrupt processor
ENDASM
OPTION_REG = OPTION_REG & $80 | 1  ; Set TMR0 Prescaler to 256, leave RBPU alone
@    INT_ENABLE   INT_INT     ; enable external (INT) interrupts
'@    INT_ENABLE  TMR0_INT     ; enable Timer 0 interrupts
@    INT_ENABLE  TMR1_INT     ; Enable Timer 1 Interrupts  
wsave   VAR BYTE    $20     SYSTEM      ' location for W if in bank0
'wsave   VAR BYTE    $70     SYSTEM      ' alternate save location for W 
GOSUB ResetTime              ' Reset Time to  0d-00:00:00.00
GOSUB StartTimer             ' Start the Elapsed Timer
Main:
    IF SecondsChanged = 1 THEN  
       SecondsChanged = 0
       LCDOUT $FE,$C0, DEC Days,"d-",DEC2 Hours,":",DEC2 Minutes,":",DEC2 Seconds
    ENDIF
    LCDOut $FE, $80, "Period = ", DEC P1 DIG 3, DEC P1 DIG 2, dec P1 dig 3
GOTO Main
'---[INT - interrupt]---------------------------------------------------    
HallCount:  
         @ bcf T1CON,TMR1ON ; Switch off timer
        period.lowbyte = TMR1L  'Record Result
        period.highbyte = TMR1H
@ clrf TMR1H  ; Reset registers to zero
@ clrf TMR1L
@ bsf T1CON,TMR1ON  ;Start timer
period = (period / 5) * 2  'Gives period value in microseconds
p1 = period
@ INT_RETURN
I have left in the timer interupt running as it shows that the pic is running for now.

The output to the LCD now changes depending on the speed of the rotations, however I'm not sure if my prescaler is setup right (4mhz osc) and if the calc to get the microseconds is correct for my osc (thanks BobEdge).