谈谈51单片机定时器初值与晶振之间的关系
单片机定时器计算详解-辽河之滨 2021年5月
12个振荡周期为一个机器周期,每个机器周期可以使定时器/计数器计数一次。12兆晶振为12000000(一千二百万)赫兹,除以12个振荡周期,即每秒1000000(一百万)个机器周期。计数器做多能计65536个机器周期,所以,以12兆晶振计算,每秒钟1000000(一百万)个周期能装满计数器15.2587891次,但这样有误差,最好是被1000000(一百万)整除的数,比如,1000,10000,50000等值。以每50000个机器周期计数一次为例,达到这个数量的机器周期,计数器就计数一次,这样,1秒钟正好计数20次。那么就需要把计数器先装一部分值进去。这个值就是初值,即65536-50000=15536(初值3CB0),把15536转换成16进制,分别装入TL0和TH0当中。
11.0592兆晶振,11059200/12=921600(每秒机器周期),1000000/921600=1.08506944微秒(每个机器周期耗时)
50000/1.08506944≈46080(个周期为)50毫秒
65536-46080=19456(初值4C00),
例如定时器/计数器中断发生后, 计数器装入16位初值。
TL0=0XB0
TH0=0X3C
TMOD=0X00
TR0=1 (定时器开关)
然后开启总中断,EA=1
开启定时器开关,ET0=1
学单片机这么久,还不会计算定时器初值就out了。
在学习单片机的时候,我们发现很多功能都是通过中断来实现的。之前也举过烧水的例子来阐述中断,今天就讲解一下定时器赋初值的方法。8位的定时器最大可计数2的8次方为256,16位的定时器最大可计数2的16次方为65536。由于单片机的定时器是递加式的,所以最大值减去所要定时的值就是初值,举例如下:
最大值为100,我们只需要38,怎么办呢,由于是递加的,我们只需要在62时开始计时就可以了。
以proteus仿真为例简单讲解定时器赋初值
用proteus搭建的电路图如下,晶振为12M,P2.0每10ms翻转一次,即P2.0输出的频率为100HZ。
这里使用16位的定时器,那单片机定时器0的最大计数就是65536.晶振为12M,那单片机的一个机器周期就是1us,定时器 0工作在方式1时最大定时65.536ms。
定时器的定时时间T = (65536-X),单位是us;
定时器初值X = 65536-T;
假设定时时间T=10ms=10000us,
那定时器初值X=65536-10000=55536us,也就是定时器0从55536开始递加到65536就是10ms,所以55536就是定时器的初值,55536转化为十六进制为0Xd8f0,所以定时器的初值为:
TH0 = 0XD8;
THL = 0XF0;
用虚拟示波器抓到的波形如下:
只需要支付硬件成本的STM32单片机学习板正在集资众筹,价格129元,。这款学习板包含了GPIO应用、RS232通讯、RS485通讯、CAN总线通讯、USB通讯、IIC总线、SPI总线、JTAG在线调试、SW在线调试、ISP自动下载、RTC实时时钟、TFT真彩屏应用等丰富的外设资源,详情请加微信号了解。
本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。
公众号:micropoint8。嵌入式学习网振兴网:www.picmcu.com
相关问答
51单片机 T0 定时器 4种方式的定时时长分别是多少 - 懂得51单片机最大硬件定时时间,就是定时器能定时的时间,最长时间=65536*TcTc=fosc/12,fosc是单片机的晶振频率。以频率=12M为例吧,Tc=1us最大定时时间=6...
51单片机 采用 定时器 1的方式2实现周期为1S的程序! 初值 设为多少?我怎么求都不对!实现不了啊?求?定时器1的方式2是8位定时器,最大只能实现256US的定时(晶振12mhz)定时250us的话,需4000次才够1S定时250us初值为256-250=6TMOD=0X20;TH1=6;TL1=6;T...
【定时计数器实质是加1计数器是什么意思】作业帮[回答]51系列单片机内部有两个计数器/定时器,是加1计数器,就是每个机器周期计数值就加1,如原来值是10,加1后就为11.如果是减1计数器就减1,减1后就为9.搞清...
求 51单片机 定时时间与计数 初值 关系式的推导过程?不要去记什么公式,知道原理就行了。以16位方式计数为例,51单片机的计数方式是向上计数,16位计数器如果计数初值为0,则计数器从0计到65535,每计一个1微秒,...
单片机定时器初值 计算。我算的不对啊 - 噢美杜莎 的回答 - 懂得不用拿65536去减,因为初值的意思是时钟脉冲到了45872个后就等于是到了50ms,所以没必要用65536去减你的初值是对的,而你计算的时候错了。TH0=(65536...
51单片机定时器初值 为0x00,计数时0x00计算在内吗?没理解你的问题,看来你对定时器的工作还有一些疑惑,用STC89C52单片机来说,它有3个定时器,分别是T0,T1和T2。其中T2有捕捉功能。举例如定时器配置为16位...没...
用 51单片机 做电子琴,为啥改变 定时器初值 和改变计数次数效果...51单片机定时器中断没法定时时间太短的,2us才多少条指令,这么快的中断频率无法精确响应的,直接填充需要的定时时间值就好了定时器的初值大小与用定时器产生输出...
单片机定时器 延时计算方法?51系列单片机的话:先算出来你的定时器+1的单位时间Tu,你需要定时的时间是Tc(注意Tc不能超过定时器的最大定时时间),你的定时器的位数是n,那么你的定时器初...
单片机定时器 求 初值 的时候为什么要除以256,除了之后得那个数的含义是什么?定时器是16位的,分成两个8位,8位二进制数就是256。除以256得到的放高8位,余下的放地8位定时器是16位的,分成两个8位,8位二进制数就是256。除以256得到的放高8...
...其波特率与fOSC、 定时器 T1工作方式2的 初值 及SMOD位的关系...[最佳回答]TH1=TH2=256-FOSC/16/12/BAUD