#define uchar unsigned char
#define uint unsigned int
#include <reg52.h>
uchar num=0,i=0;
unsigned char code Tab[]=
{
0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,
0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E
};
void main(void)
{
TH0=0x3c;
TL0=0xb0;
TMOD=0x01;//设置定时器0为工作方式0(0000 0000)
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
while(1)
{
if(num==20)
{P1=Tab;
i++;
num=0;}
if(i>15)
i=0;
}
}
void T0_time() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
num++;
}
[url=]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[/url]我是华丽的分割线[url=]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[/url]
这是我写的一段程序,目的是为了让数码管每个1S显示一个数字,使用keil仿真的时候,可以看到第一次显示时间是1.000619S,十次后时间是10.001736S,时间略有偏差,那么究竟每次耗费的0.0006S时间是用到了哪里呢?有无办法实现1.000000000000……S的精确定时? |