51单片机 求一个不用锁存器的利用定时器让数码管显示从00到99的C语言程序

如题所述

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可能是两个,而且跟单片机的晶振也有关系,是不精确的延时,
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-21
不就是定时器随便一种工作状态并开始计时,溢出时启动中断,让数码管加一,完毕之后再启动计时器嘛,具体麻烦,有心学单片机的,就自己写写,有了思路,尝试自己写程序,这才能收获点什么
第2个回答  2019-11-26
这个比较简单。
你要熟悉几个问题。
(1)数码管显示的原理。一般使用动态显示
(2)定时器工作的原理。
基本属于入门级别的,你可以先写写看。不懂的可以再问。