学单片机这么久,还不会计算定时器初值就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
定时器初值计算及使用,虹润来解
虹润系列的数显定时器采用全自动贴片封装工艺,具有很强的抗干扰能力,并具有多种输出功能和控制功能,广泛运用于电力、石化、冶金、轻工、制药、航空等诸多领域。
定时器系统是单片机内部一个独立的硬件部分,它与cpu和晶振通过内部某些控制线连接并相互作用,cpu一旦设置开启定时功能后,定时器便在晶振的作用下自动计时,但定时器的计数器计满后,会产生中断。计数时间一次为12/晶振频率。在晶振频率为11.0595mhz时,计数一次时间约等于1.09us。
定时器初值计算:
中断函数明白后,如何定时还是不清楚。开启定时器后,定时器就会开始计数,每次加1的间隔是固定的,而且到达大值就会溢出,触发中断。这样子的话我们可以设定一个初值,初值到大值的时间假设为50ms,那样的话定是的效果就达到了。定时器加1时间间隔约等于1.09us,定时器在没有赋值时默认初值为0,大值为65535,计算可得655351.09us约等于72ms,没有赋初值一次定时大为72ms。可以设置一个初值,就拿50ms来说,501000/1.09约等于45872,也就是说经过45872次计数时间为50ms,那初值就是65535-45872=19663。
使用步骤:
计算知道后,来看看定时器使用步骤:
对TMOD赋值,确定T0和T1的工作方式
计算初值,赋值TH0,TL0或TH1,TH1
对IE赋值,启动中断
TR0或TR1置位,启动定时器
处理中断函数,定时器中断后变成默认值0,要重新赋初值
相关问答
单片机定时器初值计算 方法几种表示方法都列出来,还有一种是...[最佳回答]初值计算就是要算出一个数字,让加上这个数字后,和为65536的时候,触发定时中断.所以一般的计算方法是【65536-定时时长/时钟周期(12M主频时候,频率是...
请问 单片机定时器 的 初值 是怎么设的?定时器初值=2^n-m*晶振值/分频系数;n:定时器模式,有13,8,16三种;m:要定的时间长度,晶振值:12MHz或6Mhz分频系数:12定义10毫秒;定时器模式1,晶振频率12MHz定时...
单片机 四种方式 初值计算 公式?定时中断初值计算方法是:1、确定定时时间化为微妙t。2、晶振频率以m为单位f。3、计算初值:s=65536-t*f/12比如11.0592m晶振,定时10毫秒t=10*1000=10000us...
51 单片机定时器初值 公式?为:初值=65536-(晶振频率÷分频系数÷所需计时时间)。这个公式的原因是,定时器在工作时会进行计数,而计数最大值为65536,因此初值等于65536减去需要...
单片机定时器 延时 计算 方法?51系列单片机的话:先算出来你的定时器+1的单位时间Tu,你需要定时的时间是Tc(注意Tc不能超过定时器的最大定时时间),你的定时器的位数是n,那么你的定时器初...
单片机 中 定时器 的 初值 产生1ms的定时,到底是65536-1000还是65535-1000为什么啊?急急急?定时器计数最大值为65535,再计一次则溢出,产生中断。也就是说初值设置成65535(65536-1)时,定时1个机器周期。所以正确答案是65536-1000,此时定时1000个机...
【51 单片机 定时计数器工作方式疑点 单片机定时器 /计数器的工...[最佳回答]因为51单片机处理数据是按八位进行的,所以给定时器赋初值的时候,不能将一个数直接赋到T0中,而是将这个数先转化为一个十六进制数,将它的高两位数(也...
51 单片机 用C语言或者汇编程序如何实现定时1秒?如何设定初始值?如何 计算 ?如何输出方波?如何对外部?使用定时器实现1秒定时;初始值要看单片机配置的晶振频率了,若12M晶振,初始值为TH0=0x3c;TL0=0xb0;这才是50ms,还要一个单元做计数器,计数20次才是1秒方波...
51 单片机定时器 怎么设置 初值 ?回答如下:单片机定时器的初值可以通过预设计数器初始值或者加载计数器初始值来设置。具体方式如下:1.预设计数器初始值:根据定时器的时钟频率和所需计时时间...
51 单片机 采用 定时器 1的方式2实现周期为1S的程序! 初值 设为多少?我怎么求都不对!实现不了啊?求?定时器1的方式2是8位定时器,最大只能实现256US的定时(晶振12mhz)定时250us的话,需4000次才够1S定时250us初值为256-250=6TMOD=0X20;TH1=6;TL1=6;T...