To get precise intervals in a timer interrupt you can *add* an offset to TMR0 register. There is no need to know how many cycles into the interrupt you are. movlw -INTERVAL+3 addwf TMR0 The next interrupt will occur precisely INTERVAL cycles from the current interrupt. The offset of three compensates for the two cycle write loss plus one cycle that is lost in the read-modify-write operation of "addwf". Good luck, Jim