#include<reg52.h>
char j;
void main()
{
char i=0;
char code table[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
P1=table;
j=0;
TMOD=0x01; //设置定时器1为工作方式1
TH1=(65535-50000)/256; //装初值
TL1=(65535-50000)%256;
EA=1; //开总中断
ET1=1; //开定时器1中断
TR1=1; //启动定时器1
while(1)
{
P1=table[i];
if(j==10)
{
j=0;
i++;
if(i==8)
i=0;
}
}
}
void timer1() interrupt 3
{
TH1=(65535-50000)/256; //重装初值
TL1=(65535-50000)%256;
j++;
}
程序如上,我的晶振是11.0592M,运行上面的程序,理论上是500ms 的,可实际结果为什么却不是呢? 实际上流水灯的流动时间估计只有100多毫秒,速度很快。 |