PIR1.0 is the Timer 1 overflow flag. Every time Timer 1 overflows, the bit gets set. You have to clear the bit so the next time the timer overflows it gets set again. Information can be found on Microchip's DS3029B page 22.

This is a very effective way of running an accurate clock. As long as your code's execution time is less than the overflow period, all works very well.
The loop time is independent from the execution time of your code.

You can do the same thing with Timer 0. In that case, you have to check
INTCON.2 for overflow.

I use the technique all the time. It allows me to control program flow and display while using almost no PAUSE statements - something to be avoided if possible, since the processor can do nothing else while tied up in a PAUSE.

As I mentioned before, you can pre-load the timer to get accurate periods of any value. Just remember that if you load the timer registers, you must write the LSB last.


Depending on your application, you could do something similar with:
------------------------------------------------------------------
TOP:

'Your Code'

Toggle LED
Pause 500

GOTO TOP

-------------------------------------------------------------------

This would toggle the LED every time the loop executed. The timing wouldn't be as accurate as in the previous method because the exact time between toggles would vary depending on the execution time of your code.