First off, your GIE should be 1 in the main. WHen GIE =0, global interrupt is off. Second, check your if conditions (if(T0IF && T0IE)). normally, its only the flag that needs to be checked. then you set the enable line inside the code and reset the flag as well. Third, i think (not sure on this), the main program should make sure it will run as continuous loop to as to allow interrupt to trigger whenever the flag is set. Also check your TMRO registers. it seems its not included in your initialization. Hope this helps.