自己编写的一段51单片机控制8x8点阵屏显示“上”的代码,请问有什么错吗?

#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DIO=P3^4;
sbit S_CLK=P3^5;
sbit R_CLK=P3^6;
uchar code lie[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar code hang[]={0xff,0xff,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

void delay(uint z)
{    uint x,y;
    for(x=z;x>0;x--)
    for(y=144;y>0;y--);
}

void main()
{    uchar num,i;
    while(1)
    {
        for(num=0;num<8;num++)
        {for(i=0;i<8;i++)
            {
            R_CLK=0;
             S_CLK=0;
             if(hang[num]&0x01)
             DIO=1;
             else
             DIO=0;
            S_CLK=0;
             hang[num]=_cror_(hang[num],1) ;
             }

        for(i=0;i<8;i++)
            {
            R_CLK=0;
             S_CLK=0;
             if(lie[num]&0x01)
             DIO=1;
             else
             DIO=0;
            S_CLK=0;
             lie[num]=_cror_(lie[num],1) ;
             }
              R_CLK=0;
            delay(10);
        }
    }
}


不对照原理图是很难看嵌入式程序的,加注释是个好习惯