解释下这个代码的意思 单片机定时器 中断

#include <REGX51.H>
sbit gx = P1^0;

void Gx_In()
{

TMOD = 0x01;    //    TMOD=0x01; 0000 0001                                                                             
TL0=0x20;    //高八位赋值
TH0=0xD1;    //定时1ms   低八位赋值
TF0=0;    //溢出标志位清零
TR0=1;    //GATE为零,TR0置1计数
ET0=1;    //允许计数器T0中断
EA=1;    //总中断允许

}

void main()
{
Gx_In(); //初始化
while(1){
}
}

unsigned int M0Couent;

void Timer0_Routine() interrupt 1 //中断定义
{
char i;
TL0=0x20; //重新赋初值
TH0=0xD1;
i++;
if(i>=10) //累加10次进入循环
{
i=0; //清零,重新计数
gx =~gx;
}
}