By setting PIR1 = 1 you are setting the TMR1IF interrupt flag (PIR1.0). So it doesn't wait for the timer to overflow, it just goes straight to the interrupt routine.

Then once in the interrupt code, it gets caught in an endless loop because the TMR1IF never gets reset. The 2000 count is actually from the 400us pause in the interrupt routine, +7 for the resume and repeat interrupt call.

So, change PIR1 = 1 to PIR1 = 0 Then add the same line "PIR1=0" to the end of the interrupt routine, to reset the interrupt flag before resume.

Or, to be more precise, PIR1.0 = 0

HTH