单片机红外解码得不到值,新人小问题,求带

单片机红外解码得不到值,led显示只能得到零,查了很长时间,估计可能是时间分配的不对,但也不确定。求各位大佬帮忙看看程序,感激不尽!我的延时函数和LED函数都是可以用没有问题的。
void ReadIr() interrupt 0

{

unsigned char j,k;

unsigned int err;

Time=0;                  


                                                                                        //引导码
if(IRD == 0)                                                //对于九毫秒低电平的判断

{    

            for(err = 9000; err>0; err--)       

    {   

        Delay_us(1);

        if(IRD == 1)return;         

    } 

    if(IRD == 1)                          //对于4.5毫秒高电平的判断

    {

        err=4500;

        while(err>0)    

        {



            Delay_us(1);

            err--;

            if(IRD == 0)return;

        }

        for(k=0;k<4;k++)        //接收四组键码

        {               

            for(j=0;j<8;j++)    //每一个键码的位
            {

            if(IRD == 0){                 
                err=56;     

                while(err>0)           

                {

                    if(IRD == 1)return;

                    Delay_us(10);

                    err--;

                }

            }

            if(IRD == 1){                //判断高低电平得到键值的位

                err=168;

                while(err>0)

                {

                    if(IRD == 0)return;

                    Delay_us(10);

                    Time++;                 
                    err--;

                }

            }



            if(Time < 56){

                    IrValue[k] <<= 1;



            }

            else if(Time > 60){

                    IrValue[k] <<= 1;

                    IrValue[k] |= 0x01;



                }

            Time = 0;

            }

        }



    }

}

}

https://zhidao.baidu.com/question/938338290032034252.html