Quote Originally Posted by Bruce
Here's one very simple solution. Use Timer 0 as a background counter. This will count transitions of high-to-low, or low-to-high on RA4/T0CKI
Code:
DEFINE OSC 20
DEFINE LOADER_USED 1

P_Count var byte       ' Holds count value
TRISA.4 = 1            ' RA4/T0CKI = input
INTCON.7 = 0           ' Disable interrupts

' Set 1:1 prescaler & assign to WDT
' Set TMR0 clock to external input on RA4/T0CKI
' Increment on high-to-low transition on RA4/T0CKI pin
OPTION_REG = %00111000 

Main:
    P_Count = 0  ' Clear pulse counter
    TMR0 = 0     ' Clear TMR0 counter
    
Loops:
    P_Count = TMR0 ' Get TMR0 count
    HSEROUT ["Counts = ",dec P_Count,13,10]
    IF P_Count = 255 THEN Main  ' Clear when TMR0 reaches 255
    PAUSE 500
    GOTO Loops
If OPTION_REG.4 = 1 Increment on high-to-low transition on T0CKI pin.

If OPTION_REG.4 = 0 Increment on low-to-high transition on T0CKI pin.

Super easy, and all counting is done in the background while your program code plods along. Just check whenever it's convenient to find the count.
Would Timer still counts if the Pic is aspleep.
i want to do something similar with aa 18f452 but the problem is that my pic needs to count even when the pic is asleep is this posible?

Isaac