STC8G1K08A定时器的使用(原理+代码+完整工程)
创作时间:
作者:
@小白创作中心
STC8G1K08A定时器的使用(原理+代码+完整工程)
引用
CSDN
1.
https://m.blog.csdn.net/github_38203983/article/details/142588616
本文详细介绍了STC8G1K08A单片机定时器的使用方法,包括定时器的基本原理、STC8系列单片机定时器的特点和配置方法,以及具体的代码实现和实验现象。对于从事单片机开发或对嵌入式系统感兴趣的读者来说,这篇文章能够提供有价值的技术指导。
一、定时器的原理
在前面的例子中,我們使用DelayMs()实现延时.那除此之外,有没有其他方法进行精确的定时呢?
有的,那就是Timer定时器.
定时器的要素:时钟源,初值
如图是一组标准的方波信号,假设它的周期5ms(频率200Hz). 这样的方波一直在不断地产生,源源不断,无始无终.
那我们若想定200ms的时间,那要数多少个方波?
答案是: 40.
200ms/5ms= 40. 当我们数到40个方波时,定时时间刚好200ms.
注意:
- 定时时间最好是频率的"整数分之一",免得出现误差!
- 初值的计算还需要结合定时器的位数进行计算: 初值=2^位数-计时次数
二、STC8的定時器
STC8G内置5个16位定时器. 它们可以实现定时,计数,脉宽测量等功能.
通过配置不同的工作模式,可以实现8位/16位的切换.
以下,我们重点介绍Timer0定时器的模式0(16位自动重装载模式).
从图中我们可以看出:
- A部分:选择时钟源的频率
- B部分:选择定时/计数方式
- C部分:选择打开/关闭定时器
- D部分:设置定时器的初值
- E部分:选择是否打开时钟输出
假设我们单片机的时钟频率是24MHz,需要定时10ms.那么我们需要进行如下计算: - A部分:设置AUXR.7 = 0, 定时频率=时钟频率/12=24MHz/12=2MHz
– 每个脉冲的时间 = 1/2MHz = 0.0005ms - B部分:设置C/T = 0,定时模式
- C部分:设置GATE=0,TR0=1,打开定时功能
- D部分:设置初值,计时次数=10/0.0005=20000
– 由于是16位定时器,初值=2^16-20000=65536-20000=45536
– 进制转换: 45536 (十进制)=0xB1E0 (十六进制)
– TH0 = 0xB1, TL0 =0xE0 - E部分:设置T0CLKO=0,无需输出定时频率
三、关键代码
void main()
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式: 模式0,16位自动重装载
TL0 = 0xE0; //设置定时初始值 定时时间10ms
TH0 = 0xB1; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
EA = 1; //打开总中断
while (1);
}
四、实验现象
下载程序后,LED看起来常亮.(难度不应该是闪动吗?)
使用示波器看LED引脚,可以发现引脚电平高低变化.测量高电平时间,刚好是10ms.
LED常亮是由于人眼的余晖效应.
热门推荐
生完多久可以运动减肥
白糖为何被中国定为战略物资?战时白糖一克难求,可能制成炸弹
球星家庭遭遇不幸,爱与坚强的考验
银行办理林权抵押贷款的流程与步骤
抗抑郁药物的常见种类及应用
敢爱敢恨,不留人情债的三个星座女
儿童夏季"不速之客"幽门螺旋杆菌:注意4个症状,出现及时就医
桃胶的正确吃法是什么
助听器和人工耳蜗有什么区别,怎么选?
所以人为什么会感觉“痒”?!看这篇,揭示“痒”信号的传导机制
工业工程专业主要学习什么
工业工程专业就业方向及前景:智能制造时代的效率革命核心
描写儿童生活的古诗(精选25首)
量子技术:ICT领导者的关键战略和机遇
银行发声严控信用卡“炒金” 投资者如何理性看待黄金投资?
法定继承人未成年如何确保其权益
治疗腰椎间盘突出时的牵引重量应为多少
楼盘可以讲价吗?揭秘房产交易中的价格谈判技巧
睡觉英语怎么读
豆腐、豆制品怎么吃最营养?专家传授5大健康食用观念
大理、丽江不香了!云南小众目的地全推荐,附路线!速速收藏
昆明七大冷门景点推荐:避开拥挤,寻找属于你的宁静
不明原因发烧的6种可能
如何判断自己是否发烧
手机缓存清理方法大全:从系统工具到第三方应用,让手机重新焕发活力
王健林开年连卖5座万达广场,谁来接班万达?
女性心脏疾病诊断迎来革命,先进MRI技术带来早期诊断希望!
美术可以提升哪些能力?具体包括哪些方面?如何锻炼?
复方丹参片的8个临床应用,一文总结
什么是彼得石?揭秘这种神秘宝石的特性与用途