单片机定时器的寄存器

发布者:雷电狂舞最新更新时间:2016-12-23 来源: eefocus关键字:单片机  定时器  寄存器 手机看文章 扫描二维码
随时随地手机看文章

标准的 51 单片机内部有 T0 和 T1 这两个定时器,T 就是 Timer 的缩写,现在很多 51 系列单片机还会增加额外的定时器,在这里我们先讲定时器 0 和 1。前边提到过,对于单片机的每一个功能模块,都是由它的 SFR,也就是特殊功能寄存器来控制。与定时器有关的特殊功能寄存器,有以下几个,大家不需要去记忆这些寄存器的名字和作用,你只要大概知道就行,用的时候,随时可以查手册,找到每个寄存器的名字和每个寄存器所起到的作用。

表 5-1 的寄存器是存储定时器的计数值的。TH0/TL0 用于 T0,TH1/TL1 用于 T1。

表 5-1 定时值存储寄存器
名称描述SFR 地址复位值
TH0定时器 0 高字节0x8C0x00
TL0定时器 0 低字节0x8A0x00
TH1定时器 1 高字节0x8D0x00
TL1定时器 1 低字节0x8B0x00


表 5-2 是定时器控制寄存器 TCON 的位分配,表 5-3 是则是对每一位的具体含义的描述。

表 5-2 TCON——定时器控制寄存器的位分配(地址 0x88、可位寻址)
76543210
符号TF1TR1TF0TR0IE1IT1IE0IT0
复位值00000000


表 5-3 TCON——定时器控制寄存器的位描述
符号描述
7TF1定时器 1 溢出标志。一旦定时器 1 发生溢出时硬件置 1。清零有两种方式:
软件清零,或者进入定时器中断时硬件清零。
6TR1定时器 1 运行控制位。软件置位/清零来进行启动/停止定时器。
5TF0定时器 0 溢出标志。一旦定时器 0 发生溢出时硬件置 1。清零有两种方式:
软件清零,或者进入定时器中断时硬件清零。
4TR0定时器 0 运行控制位。软件置位/清零来进行启动/停止定时器。
3IE1外部中断部分,与定时器无关,暂且不看。
2IT1
1IE0
0IT0


大家注意在表 5-3 中的描述中,只要写到硬件置 1 或者清 0 的,就是指一旦符合条件,单片机将自动完成的动作,只要写软件置 1 或者清 0 的,是指我们必须用程序去完成这个动作,后续遇到此类描述就不再另做说明了。

对于 TCON 这个 SFR,其中有 TF1、TR1、TF0、TR0 这 4 位需要我们理解清楚,它们分别对应于 T1 和 T0,我们以定时器 1 为例讲解,那么定时器 0 同理。先看 TR1,当我们程序中写 TR1 = 1 以后,定时器值就会每经过一个机器周期自动加 1,当我们程序中写 TR1 = 0以后,定时器就会停止加 1,其值会保持不变化。TF1,这个是一个标志位,他的作用是告诉我们定时器溢出了。比如我们的定时器设置成 16 位的模式,那么每经过一个机器周期,TL1加 1 一次,当 TL1 加到 255 后,再加 1,TL1 变成 0,TH1 会加 1 一次,如此一直加到 TH1和 TL1 都是 255(即 TH1 和 TL1 组成的 16 位整型数为 65535)以后,再加 1 一次,就会溢出了,TH1 和 TL1 同时都变为 0,只要一溢出,TF1 马上自动变成 1,告诉我们定时器溢出了,仅仅是提供给我们一个信号,让我们知道定时器溢出了,它不会对定时器是否继续运行产生任何影响。

本节开头我们就提到了定时器有多种工作模式,工作模式的选择就由 TMOD 来控制,TMOD 的位分配和描述见表 5-4 到 5-6 所示,TMOD 的位功能如表 5-5 所示。

表 5-4 TMOD——定时器模式寄存器的位分配(地址 0x89、不可位寻址)
76543210
符号GATE
(T1)
C/T
(T1)
M1
(T1)
M0
(T1)
GATE
(T0)
C/T
(T0)
M1
(T0)
M0
(T0)
复位值00000000


表 5-5 TMOD——定时器模式寄存器的位描述
符号描述
T1/T0在表 5-5 中,标 T1 的表示控制定时器 1 的位,标 T0 的表示控制定时器 0
的位。
GATE该位被置 1 时为门控位。仅当„INTx‟脚为高并且„TRx‟控制位被置 1 时使能
定时器„x‟,定时器开始计时,当该位被清 0 时,只要„TRx‟位被置 1,定时
器 x 就使能开始计时,不受到单片机引脚„INTx‟外部信号的干扰,常用来测
量外部信号脉冲宽度。这是定时器一个额外功能,本节课暂不介绍。
C/T定时器或计数器选择位。该位被清零时用作定时器功能(内部系统时钟),
被置 1 用作计数器功能。


表 5-6 TMOD——定时器模式寄存器 M1/M0 工作模式
M1M0工作模式描述
000兼容 8048 单片机的 13 位定时器,THn 的 8 位和 TLn 的 5 位组
成一个 13 位定时器。
011THn 和 TLn 组成一个 16 位的定时器。
1028 位自动重装模式,定时器溢出后 THn 重装到 TLn 中。
113禁用定时器 1,定时器 0 变成 2 个 8 位定时器。


可能你已经注意到了,表 5-2 的 TCON 最后标注了“可位寻址”,而表 5-4 的 TMOD 标注的是“不可位寻址”。意思就是说:比如 TCON 有一个位叫 TR1,我们可以在程序中直接进行 TR1 = 1 这样的操作。但对 TMOD 里的位比如(T1)M1 = 1 这样的操作就是错误的。我们要操作就必须一次操作这整个字节,也就是必须一次性对 TMOD 所有位操作,不能对其中某一位单独进行操作,那么我们能不能只修改其中的一位而不影响其它位的值呢?当然可以,在后续课程中你就会学到方法的,现在就先不关心它了。

表 5-6 列出的就是定时器的 4 中工作模式,其中模式 0 是为了兼容老的 8048 系列单片机而设计的,现在的 51 几乎不会用到这种模式,而模式 3 根据我的应用经验,它的功能用模式 2 完全可以取代,所以基本上也是不用的,那么我们就重点来学习模式 1 和模式 2。

模式 1,是 THn 和 TLn 组成了一个 16 位的定时器,计数范围是 0~65535,溢出后,只要不对 THn 和 TLn 重新赋值,则从 0 开始计数。模式 2,是 8 位自动重装载模式,只有 TLn做加 1 计数,计数范围 0~255,THn 的值并不发生变化,而是保持原值,TLn 溢出后,TFn就直接置 1 了,并且 THn 原先的值直接赋给 TLn,然后 TLn 从新赋值的这个数字开始计数。这个功能可以用来产生串口的通信波特率,我们讲串口的时候要用到,本章节我们重点来学习模式 1。为了加深大家理解定时器的原理,我们来看一下他的模式 1 的电路示意图 5-2。

图 5-2  定时器/计数器模式 1 示意图
图 5-2  定时器/计数器模式 1 示意图


我带领大家一起来分析一遍这个示意图,日后如果再遇到类似的图,大家就可以自己研究了。OSC 框表示时钟频率,因为 1 个机器周期等于 12 个时钟周期,所以那个 d 就等于 12。下边 GATE 右边的那个门是一个非门电路,再右侧是一个或门,再往右是一个与门电路,大家可以对照一下 5-1 节的内容。

图上可以看出来,下边部分电路是控制了上边部分,那我们先来看下边是如何控制的,我们以定时器 0 为例。

1) TR0 和下边或门电路的结果要进行与运算,TR0 如果是 0 的话,与运算完了肯定是 0,所以如果要让定时器工作,那么 TR0 就必须置 1。

2) 这里的与门结果要想得到 1,那么前面的或门出来的结果必须也得是 1 才行。在 GATE位为 1 的情况下,经过一个非门变成 0,或门电路结果要想是 1 的话,那 INT0 即 P3.2 引脚必须是 1 的情况下,这个时候定时器才会工作,而 INT0 引脚是 0 的情况下,定时器不工作,这就是 GATE 位的作用。

3) 当 GATE 位为 0 的时候,经过一个非门会变成 1,那么不管 INT0 引脚是什么电平,经过或门电路后都肯定是 1,定时器就会工作。

4) 要想让定时器工作,就是自动加 1,从图上看有两种方式,第一种方式是那个开关打到上边的箭头,就是 C/T = 0 的时候,一个机器周期 TL 就会加 1 一次,当开关打到下边的箭头,即 C/T =1 的时候,T0 引脚即 P3.4 引脚来一个脉冲,TL 就加 1 一次,这也就是计数器功能。


关键字:单片机  定时器  寄存器 引用地址:单片机定时器的寄存器

上一篇:单片机定时器介绍
下一篇:单片机中定时器的应用

推荐阅读最新更新时间:2024-03-16 15:26

s3c6410在linux下的WATCHDOG TIMER(看门狗定时器)驱动(2)
在上一篇中看了看门狗在linux中驱动实现的整体架构,作为混杂设备和平台设备存在。现在开始看平台设备对应的probe函数。 static struct platform_driver s3c2410wdt_driver = { .probe = s3c2410wdt_probe, .remove = s3c2410wdt_remove, .shutdown = s3c2410wdt_shutdown, .suspend = s3c2410wdt_suspend, .resume = s3c2410wdt_resume, .driver = { .owner = THIS_MODULE, .name = s3c2410-wdt
[单片机]
s3c6410在linux下的WATCHDOG TIMER(看门狗<font color='red'>定时器</font>)驱动(2)
瑞萨推出面向图形显示应用和语音/视觉多模态AI应用的 全新RA8 MCU产品群
瑞萨基于Arm® Cortex®-M85处理器的产品在优化图形显示功能的同时,为楼宇自动化、智能家居、消费及医疗应用带来超高性能和领先的安全性 2023 年 12 月 12 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子今日宣布推出RA8D1微控制器(MCU)产品群 。RA8D1产品群作为瑞萨RA8系列的第二款产品,RA8是基于Arm® Cortex®-M85处理器的首款MCU。RA8D1 MCU具有超过6.39 CoreMark/MHz(注)的突破性性能,结合充足的内存和经过优化图形与外设功能,可满足楼宇自动化、家用电器、智能家居、消费及医疗等广泛应用的各类图形显示和语音/视觉多模态AI要求。 所有RA
[单片机]
瑞萨推出面向图形显示应用和语音/视觉多模态AI应用的  全新RA8 <font color='red'>MCU</font>产品群
LPC23XX定时器功能范例
最近写了个LPC2387的定时器相关应用,把思路&代码写出来供参考。 需求:LPC2387实现0.5秒为周期的定时器 思路:以定时器2(Timer2)为例,利用定时器的计时功能即可,MR0寄存器设置0.5秒对应的计数,计数到后产生中断并充值MR0寄存器。 问题:解决0.5秒对应多少计数 定时器2对外设时钟(Peripheral Clock)进行计数,要实现0.5秒的定时周期,即MR0的计数值为外设时钟频率 (Fpclk) 的1/2。 外设时钟频率 = CPU频率/外设分频 系数 Fpclk = CCLK/PCLK_DIV 而CPU频率(CCLK)
[单片机]
MSP430单片机的热敏电阻温度测量
摘要 传统的数字式测量电阻的方法是先将电阻值转换为电信号(如电压),再用A/D转换器将其转换为数字信号,因此电路复杂,费用高。本文介绍一种类R—F转换频率测量温度的方法。直接把热敏电阻Rt接到由RC构成的多谐振荡器电路中,用MSP430单片机的捕获功能来获得多谐振荡器输出信号高低电平的脉宽并同时计数,则热敏电阻Rt与捕获高低电平时的计数值的差值成正比关系,查表可得温度值。 关键词 热敏电阻 温度测量 MSP430单片机捕获中断 测量温度一般采用热敏电阻做传感器,测量的方法有R—V转换电压测量法和R—F转换频率测量法。这两种方法的电路复杂且成本高,电路中很多元器件直接影响测量精度。本文论述一种类R—F转换频率的测量法,用NE5
[工业控制]
MSP430<font color='red'>单片机</font>的热敏电阻温度测量
单片机控制的小型发电机逆变电源的研制
中频汽油发电机作为一项重要的电能源,在需要备用电源和流动性作业的场合具有重要作用。其特别适用于野外、矿山施工作业,企事业单位备用电源以及灾后小功率临时用电,具有简单可靠,便于维修等特点。由于汽油发电机输出的是频率和电压都与市电不同的三相交流电,电压和频率的值比较高,不符合大多数用电设备的使用要求,而且输出电压随负载的变化波动较大,因此需配备自动电压调节器(AVR)使输出电压和频率在负载变化时达到稳定。传统的模拟控制方法输出电压质量差,耗能大。而随着计算机技术和电力电子控制技术的发展,数字化、智能化控制已成为逆变电源发展的必然。与传统的控制方法相比,微机控制的中小型汽油发电机逆变电源设计灵活,系统可靠,能实现实时的监控和诊断。但目前
[嵌入式]
<font color='red'>单片机</font>控制的小型发电机逆变电源的研制
51单片机外部中断示例
void Usart_INT0_init() { TMOD = 0X21; TH1 = 0XFD; TL1 = 0XFD; SM0 = 0; SM1 = 1; REN = 1; TR1 = 1; //ES = 1;//串口中断影响外部中断0 这句话会让程序无法进入外部中断服务 TH0 = 0; TL0 = 0; ET0 = 0;//关闭定时器0 IT0 = 1;//外部中断下降沿触发*/ EX0 = 1;//打开外部中断 EA = 1; //ES = 1; } void Send_data(unsigned char dat) { SBUF = dat; while(!TI); TI =
[单片机]
测试漏电保护线圈
因为需要辅导和规划一个漏电保护项目,先是上网搜索一阵子,可真是琳琅满目,丰富多彩!各式各样的漏电保护用线圈,多得看不过来! 购买了几只下图中带浅白色封装外壳的,方便安装在印刷板上. 这种互感器是一种穿心式结构,主线圈就直接穿过圆环,还有一个次级线圈是提供输出电压的,再有一个仅仅几匝的单方向线圈是测试漏电保护使用的. 漏电保护互感器正常工作时,流过线圈的电流双向相同,方向相反,在铁芯上感应的磁场合成矢量为零,因此,次级线圈不会感应输出电压来,并且与初级的电流大小无关. 一旦二条线路上的电流不相同,例如有一条线碰地漏电了,或者人体接触火线触电了,这个电流不会流向互感器线圈,而是绕过互感器,直接返回电力变压器去了.此时,互感器的次级就
[单片机]
测试漏电保护线圈
如何利用定时器产生PWM波
摘要:利用定时器产生PWM波。然后利用32的外部中断和定时器来测量32输出的波形硬件:STM32F103C8T6核心板、示波器、串口调试助手所用到的的引脚为PA8和PA0。 测量方案:在第一次外部中断(上升沿触发)到之时,开启定时器,同时计数器清零。然后等待第二次中断到来,在第二次外部中断(上升沿触发)到之时,获取计数器的计数值,同时关闭计数器。因为知道了计数器计数一个数的时间,所以在第二次外部中断(上升沿触发)到之时,获取计数器的计数值,通过这个值就知道一个脉冲的时间周期。时间周期的倒数就是外部信号的频率。 一、利用TIM1的CH1产生PWM波 pwm.c #include pwm.h voidTIM1_PWM_Init
[单片机]
如何利用<font color='red'>定时器</font>产生PWM波
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved