51单片机在led点阵下载心形灯代码后,灯却全亮了

#include "reg52.h"
#include "intrins.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit SRCLK=P3^6;
sbit RCL=P3^5;
sbit SER=P3^4;

u16 code duan[]={0xff,0x48,0x44,0x22,0x44,0x48,0x30,0x00};
u16 code wei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

void delay(u8 i)
{
while(i--);
}

void Hc(u8 led)
{
u8 a;
SRCLK=0;
RCL=0;
for(a=0;a {
SER=led>>7;
led<<=1;
SRCLK=1;
nop();
nop();
SRCLK=0;
}
RCL=1;
nop();
nop();
RCL=0;
}

void main()
{
u16 j;
while(1)
{
for(j=0;j<8;j++)
{
P0=wei[j];
Hc(duan[j]);
delay(100);
Hc(0x00);
}
}
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^