i do not see any JNB TF0,$ in your code.....
please make sure u do not write your code in the are where the interrupts are vectored to...
try using the timer in the auto reload mode....it would make your as much easier as you dont have to relosd the initial values back into the timer ....
try configuring in auto reload mode and may be u could use the skeleton code given below:
i have not tested out this code...but u can try it out
ORG 0000H
SJMP main
ORG 0030 ;avoiding interrupts section
main: SETB EA ;ENABLE GLOBAL INTERRUPTS
SETB T0 ;ENABLE TIMER 0 INTERRUPT
Configure timer in auto reload mode…..
CLR C; USING CARRY FLAG FOR SIGNALLING END Of COUNT
high: MOV A,#32;
MOV R7,A;
Enable timer here…..
JNB C,$; JUMP HERE
CLR C;
SETB P1.0; HIGH ON P1.0
MOV A,#8; CONFIGURING COUNT FOR LOW PERIOD
MOV R7,#A
JNB C,$;
CLR C;
CLR P1.0; LOW ON P1.0;
SJMP high;
ORG OOOBH ISR routine
SJMP HERE
ORG 0300H
HERE: ISR_ROUTINE:
DJNZ R7,DOWN
RETI;
DOWN: SETB C;
RETI;
You will have to recalculate the count values as per your need.