I copied and pasted the following from Microchip app note "Compiled Tips 'N Tricks Guide". This should help you out.
Find the app note and download it, lots of good stuff in it.
The duty cycle of a waveform is the ratio
between the width of a pulse (W) and the
period (T). Acceleration sensors, for example,
vary the duty cycle of their outputs based on
the acceleration acting on a system. The CCP
module, configured in Capture mode, can be
used to measure the duty cycle of these types
of sensors. Here’s how:
1. Configure control bits CCPxM3:CCPxM0
(CCPxCON<3:0>) to capture every rising
edge of the waveform.
2. Configure Timer1 prescaler so that Timer1
will run to Tmax without overflowing.(see Note 1)
3. Enable the CCP interrupt (CCPxIE bit).
4. When CCP interrupt occurs, save the
captured timer value (t1) and reconfigure
control bits to capture every falling edge.
Note 1: Tmax is the maximum pulse period
that will occur.
5. When the CCP interrupt occurs again,
subtract saved value (t1) from current
captured value (t2) – this result is the pulse
width (W).
6. Reconfigure control bits to capture the next
rising edge.
7. When the CCP interrupt occurs, subtract
saved value (t1) from the current captured
value (t3) – this is the period (T) of the
waveform.
8. Divide T by W – this result is the Duty Cycle
9. Repeat steps 4 through 8.
Edit: This didn't really answer your question but I assume this is the way you are doing it. Is the duty cycle varying alot? If timer 1 overflows you change the prescaler value.