th0=(65536-15536)/256;
tl0=(65536-15536)%256;
这个是由于tl0跟th0都是8位寄存器,组合在一起就是16为寄存器,那么2^16=65536;赋值的时候减去15536,是因为定时器溢出的时候是达到计数65536的时候,那么减去这个数就是相当于你想计数器计数15536个时钟clock后溢出;即从0到15536,共计15536个时钟clock;当达到15536后th已经到了65536溢出了,因为你赋的初值为65536-165536
=
49000;计数器实际工作是从49000开始的,
至于软件延时
void
delay(uchar
x)
{
int
i,j;
for(i=x;i>0l;i--)
for(j=255;j>0;j--);
}
这个是执行一条指令有不同的clock数的,赋值是一个clock,for可能是两个,而且跟单片机的晶振也有关系,是不精确的延时,
温馨提示:答案为网友推荐,仅供参考