定时器,其实就是咱数电里面计时数的一种应用,带着学习计数器的思维来看单片机里面的定时器就会感觉简单一些了。
先简单说说原理。
比赛用的板子系统时钟是10MHz=0.1us
定时器时钟是5MHz=0.2us
板子有两个定时器T0和T1,都是十六进制的,由高八位的THx和低八位的TLx两个寄存器促成,计到65535之后,再输入一个信号,计数器就会堆栈溢出了,溢出位置是TCON寄存器的TF0或者TF1的位置。
如果要定时10ms的话,相当于计数10000个脉冲后计数器就计到最大值了
板子的定时器最大值为0xffff=65535
这里采用异步置数的方法进行及时,所以初始值应该设为65535-50000=15535=0x3caf
说一下怎么换算得到的:
初始值寄存器TH0=(65535-10000)/256=0xd8
TL0=(65535-10000)%256=0xef
其实在写代码的时候写到前面一步就可以了,计算机会自己进行计算的
51单片机的定时/计数器
51单片机有两个定时/计数器T0和T1,为16位加法计数器,由低8位TLx和高8位THx两个寄存器组成,最大计数值为65535个计数脉冲。
该加1计数器的计数脉冲来源有2个:
<1> 系统时钟振荡器输出的12分频。
<2> T0或T1引脚输入的外部脉冲信号。
每接收到一个计数脉冲,计数器就会加1,当计数值累计至全为1时(8位255,13位8191,16位65535),再输入一个计数脉冲,计数器便会溢出回零,并且计数器的溢出是TCON寄存器的TF0或TF1位置1,同时向内核提出中断请求。如果定时/计数器工作于定时模式,则表示间隔定时时间到,如果工作与计数模式,则表示计数值已满。
假设单片机的外部晶振为12MHz,那么,经

本文详细介绍了51单片机中定时器的工作原理及其应用,包括如何计算定时器的初值来实现特定时间间隔的定时任务,以及通过示例代码展示了如何使用定时器实现LED灯的定时闪烁。
最低0.47元/天 解锁文章
870

被折叠的 条评论
为什么被折叠?



