Andy, Thank you for the help. I am a beginner as you can tell. You were absolutely right about the holes in my program. I slapped myself. I tried your suggested code modification and was still not able to make it work. I must be overlooking something. I wasn't really sure of what to do with the " goto cleanup". I have checked my hardware and its ok. The program you suggested just returned the 250 overflow value. My original program counted and displayed via leds, but the overflow didn't work. If you have time could you take another look. Nichole Your code suggestions: MOVLW 250 ;Start at 250 (we'll be counting down). MOVWF PULSE1S ; CAP_C: BSF PORTA,0 ;Charge the cap. NOP ; MOVLW 11111111B ;Stop charging and prepare to time the TRIS PORTA ;discharge. MEAS1: CLRWDT ;Reset the watchdog timer. BTFSS PORTA,0 ;If the cap has discharged, jump to GOTO CLEANUP ;CLEANUP. DECFSZ PULSE1S ;Otherwise, decrement PULSE1S. GOTO MEAS1 ;If PULSE1S has not yet reached 0, ;loop back. ; At this point, we've either looped 250 times, or the cap ; has discharged. Either way, PULSE1S = 250 - [number of loops]. MOVF PULSE1S,W ;PULSE1S = 250 - PULSE1S. SUBLW 250 ; MOVWF PULSE1S ; RETURN ;Return with PULSE1S = number of loops, ;limited to a maximum of 250.