51单片机定时计数器的设置

92次阅读
3 条评论

51单片机定时计数器的设置

C4镇楼

首先,原理很复杂,我们直接跳过,来看看一个很标准的设置

截取自上课老师给我们的24秒倒计时响铃程序

51单片机定时计数器的设置

第一行TMOD=0X01 意思是配置TMOD寄存器(你问我什么是寄存器,嗯…我自己也解释不清)为定时器0的模式1(将TMOD赋值为0X01也就是二进制的’00000001’,前四位(高四位)为定时器1,都为0表示不启用,而后四位的最后一位为1,则对应下图的M0启用,为模式1)

51单片机定时计数器的设置

若启用M1,为模式2,M1和M2同时启用为模式3,我还不知道这两个模式是啥,前面的区域以后再来探索吧

 

接下来看到一长串又臭又长的数字

TH0 = (65536 – 50000) / 256;//整个括号相当于我们要定的时
TL0 = (65536 – 50000) % 256;

(我们设定的是每500ms反复48次,我们先将时间设为50ms,就是50000us,之后再解释)

我们要定时的值为x 这里有一个公式:(2^16x)×T周期=T定时

(2^16-x)*1us=50000us

代入和解析一下就是

65536-x=50000

 

因为定时计数器是无法完成24秒的计算的,所以我们要通过多次累加的方法实现

 

每次计数达到,也就是溢出时,我们就应该重置溢出,故有TF0=0

代码中又有

if (++T_count == 10)

count–;

因此,每 10 次溢出(10 × 50ms = 500ms),count才减少 1。

 

这样往复48次,就能达到24000ms,也就是24秒!

你学会了吗 快去安装C4吧(不要当真

正文完
 2
评论(3 条评论)
2024-12-04 18:28:55 回复

可以的

 Linux  Chrome  伊朗
biosphere
2024-12-11 15:16:08 回复

跟我一起报个蓝桥杯玩玩

 Windows  Chrome  中国江苏省无锡市移动
    2024-12-15 00:56:32 回复

    我没那么厉害,,老师教的也只是依葫芦画瓢,(不过你是谁啊)

     Android  Chrome  中国移动