关于单片机c语言版的问题

请问为什么我的定时器中断始终加不到20,然后(if>20)那段程序下面的就用不了,我的i变量是在外面定义的 。
#include<reg51.h>
unsigned int i=0;
unsigned int j=0;
unsigned char b[]={0xa4};
void inittime()
{
TH0=0x3c;
TL0=0xb0;
TR0=1;
TMOD=0x01;
}
void initinsert()
{
ET0=1;
EA=1;
PT0=1;
}
void main()
{
inittime();
initinsert();
while(1)
{
P1=~P1;
}
}
void inserttask(void) interrupt 1
{
inittime();
i=i+1;
if(i>20)
{
i=0;
P2=b[j];
j++;
if(j>8)
j=0;
}
}

img

这个是0的时候下面的程序就可以用,不知道为啥
b[]后面还有好几个数我没有打出来,因为说x不能重复。
破案了 ,过了20秒左右才显示一次 我不是设的1秒吗