Timer Interrupt being called everytime - Pic16F877A and CCS PIC C
I think you missunderstood the timer-funtions. According to your comment you are assuming, that set_timer1 will set the value the timer counts to. But what realy happens is, that you set timer1 to the value 8000. The timer interrupt is triggered everytime the timer overflows.
Because timer1 is a 16 bit timer this happens when the counter reaches 65535.
So the first time the timer counts from 8000 to 65535, triggers the interrupt, resets the counter to 0 and counts again to 65535, triggers the interupt, and so on.

Let \$f\$ be the clock frequency, then is the time interval \$T\$ your interrupt is triggered:
$$
T = \frac{4\cdot2^{16}}{f}
$$
So for a 1Mhz clock frequency your interrupt is triggered every 262ms, for a 20Mhz it is triggered every 13ms.

What you need to do to get a bigger delay is to increase a software-counter in your interrupt routine. But with your 20Mhz clock you are getting these odd 13ms.
What you need to get a nice number like 10ms is to count to 50000 (rearrange the formula from above). So what you can do is initialize the timer not to 0 but to \$2^{16} - 50000 = 15536\$ (this time with the set_timer1-function).
The last thing is to increase the mentioned software-counter everytime your interrupt triggers. When your variable hold a value of 8000 you know, that 8s elapsed.

You should read the datasheet for the pic, especially chapter 6 'Timer1 Module', to get a better understanding what is happening and how to use your pic microcontroller.