你这程序写得太复杂了吧,延时位置不对,主循环程序改成下面这样才行。
while(1)
{
if(i!=8)
{
P2=table[i];
i++;
while(num<100);num=0;
}
else i=0;
}
还有:c3344c指出的:
ET1=1;//这一行应改成ET0 = 1;
TR1=1; //这一行应改成TR0 = 1;
首先纠正你对T0初始化的错误:
void main()
{
TMOD=0x01;
TH0=0xd8;
TL0=0xf0;
EA=1;
ET1=1;//这一行应改成ET0 = 1;
TR1=1; //这一行应改成TR0 = 1;
理由:你试图使用定时器T0的中断改变num的值,但你在初始化T0定时器时,启动的却是T1(TR1 = 1),且使能的是T1的中断(ET1 = 1)。
流水灯试验不用那么麻烦的吧,直接用移位操作就行了