前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

基于51单片机(STC89C52)如何定时10ms

qiguaw 2024-12-25 14:53:52 资源文章 18 ℃ 0 评论

大家好,今天给大家介绍51单片机(STC89C52)如何定时10ms,下方附有本文涉及的全部资料和源代码的获取方式,可进群免费领取。

1.定时器如何定时

首先大致描述一下定时器的定时原理,其实本质就一句话:每经过一个机器周期,寄存器就加1。

这里就又要解释什么是时钟周期,什么是机械周期。我们的51单片机无论是开发板还是最小系统板上,都会有一个电子元件叫做“ 晶振 ”,这个晶振就是单片机的“心脏”。通常为了使串口波特率稳定传输数据,大部分的51单片机上的晶振频率为11.05922MHz。时钟周期 的计算方法就是晶振频率的倒数,也就是11.0592分之一秒。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。更小的时钟周期就意味着更高的工作频率。有了时钟周期我们就可以进而计算出机械周期,一个机械周期 = 12 x 时钟周期 =12 x (1/时钟频率) 秒 = 12 / 时钟频率 秒 = 12 / 11059200 秒 = 12 000 000 / 11059200 微秒 = 1.085 微秒。总结一下,定时器定时的过程就相当于数有几个机械周期,数完了机械周期后定时器会溢出从而结束定时


2.如何定时10ms

使用51单片机定时不得不了解TCON寄存器,TR0:控制开始计时,TF0:判断定时器是否溢出(溢出时该位置1),TL0定时器初值低八位,TH0定时器初值高八位(不配置初值默认从0开始计数)。也就是说定时器模式在16位自动重装载值的情况下,从0开始计数,数完65536个机械周期也就是71ms的时候定时器会溢出。那么如果我们想定时10ms只需要从61ms的时候开始数,数到71ms的时候定时器刚好会溢出。这个时候只需要配置定时器初值的高八位和低八位即可。

配置高八位低八位的过程:

配置的过程也并不复杂,首先确定10ms包含了几个机械周期:

10ms?1.085us=9216(这里注意单位换算)

若从0开始计数到溢出一共是65536个机械周期,那么如果从61ms开始定时也是就是从65536-9216=56320开始计数,换算成16进制就如下图:

因此高位为DC, 低位为0。完美散花!!!

当然现在有的软件输入定时时间后可以自动生成C代码,例如ISP。但是我想接触单片机初期这些“捷径”尽量少走,多搞清楚点底层的东西对单片机的学习是很有帮助的。

完整代码可进群免费领取!!!

嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

点击这里找小助理0元领取:扫码进群领资料

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表