To solve this problem you have to understand how the uC works inside. In this case it is regarding the Timer 0 function. There is a register in the IC that is dedicated to interupts, you need to enable timer0 as an interupt and specify where it is to go in the program once an interupt has occured. Find something else for the IC to do while it is waiting for a timer0 interupt. On interupt have it togle GPIO, 1.
The timer normaly devides the clock frequency by 4 as you may already know. You have to load a value into the timer0 counter other wise it will keep counting until it over flows and you will get the wrong outcome.
The interupt vector is 004h so you would specify that in your code as:
org 004h
then togle I/O port
retfie
Let's do some math now, the internal clock frequency is 4MHz so if you want to get a signal that is 400 times lower (remembering that it devides by 4 on the timer input) then you need to have an output that is 10kHz.
To have the IC delay for 100 instruction cycles, you need to preload the TIMER0 register with a value that will leave 100 instruction cycles to be executed before a time out occurs. Since TIMER0 only counts in one direction (up) then it would be:
max TMR0 conter - 100
So if the max timer0 counter value is FFh (255 decimal) then you would need to load a decimal value of 155 into the register. The hex form of this value is 9Bh.
You will need to address the following registers to set up timer0:
TMR0 (01h)
INTCON (0Bh) (8Bh)
OPTION (81h)
(see page 9 and 10 of the attached data sheet)
In the OPTION register bit 5 through bit 0 must all be clear. This will cause the timer0 to incriment every 2 instructon cycles (actually every 8 after the Fosc/4 input), it selects the input will be on the internal instruction cylce and it will incriment on a low to high transistion. (see page 12 of the attached data sheet)
In the INTCON register bit 7
must be set other wise the interupt will be ignored. Bit 5 must also be set and bit 2 should be clear. All other bits are not important to what you are trying to do so they can be set or left clear. (see page 13 in the attached data sheet)
On start up, you would have to tell the PIC to clear the timer0 register, or you can simply load the value 9B directly to the register. Be sure to have the program re load the value after it returns from an interupt other wise your timing will be very off. (you will have to wait until timer0 incriments past 255 from 0, that's 2040 instruction cycles)
Page 27 in the attached data sheet is a good place to start for learning how the TIMER0 register works.
Data Sheet for the PIC12F629:
http://www.datasheetcatalog.org/datasheet/microchip/41190c.pdf