]#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay300ms() //误差 0us
{
unsigned char a,b,c;
for(c=123;c>0;c--)
for(b=116;b>0;b--)
for(a=9;a>0;a--);
}
uchar tt,i;
uchar code table[]={
0xfc,0x60,0xda,0xf2,
0x66,0xb6,0xbe,0xe0,
0xfe,0xf6,0xee,0x3e,
0x9c,0x7a,0x9e,0x8e,0x01};
void main()
{
i=0;
tt=0;
TMOD=0x01; //定时器0工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //开启总中断
ET0=1; //开启定时器0中断
TR0=1;//开启定时器0
P0=0xfe;
P2=0xfc;
while(1)
{
if(tt==10)
{
tt=0;
i++;
if(i==16)
i=0;
for(i=0;i<17;i++)
{
P2=table[i];
delay300ms();
}
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
这段程序可以运行,就是在每次循环结束到下次循环之前要等待一段时间,请问这段时间是怎么回事,另外delay函数有什么用,如果不加的话数码管不能正常显示,加上了的话那么定时器的时间和延时的时间是谁控制数码管,
小弟初学,请各位指教。。。。。。。。。。。。。。。。。。 |