51单片机(十六)—— 定时器0和定时器1寄存器介绍及功能描述
这篇文章,我们对51单片机的定时器0和定时器1的寄存器和功能进行介绍。
1 定时器/计数器工作方式寄存器TMOD
定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址,TMOD用来确定定时器T0和T1的工作方式及功能选择,单片机复位时,TMOD全部被清0,TMOD寄存器的定义如下。
定时器/计数器工作方式寄存器TMOD
这个寄存器的高4位用来设置定时器T1,低4位用来设置定时器T0。
GATE—门控制位。
GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRx位来控制。
GATE=1,定时器/计数器启动与停止由TCON寄存器中TRx位和外边中断引脚(INT0或INT1)上的电平状态来共同控制。
C/T—定时器模式和计数器模式选择位。
C/T=0,定时器模式。
C/T=1,计数器模式。
M1:M0—工作方式选择位。
每个定时器/计数器由4中工作方式,他们由M1和M0设定,对应关系如下表所示。
定时器/计数器的4种工作方式
M1 |
M0 |
工作方式 |
0 |
0 |
方式0:13位定时器/计数器 |
0 |
1 |
方式1:16位定时器/计数器 |
1 |
0 |
方式2:8位初始值自动重置的8位定时器/计数器 |
1 |
1 |
方式3:仅适用于T0,分成两个8位计数器,T1停止计数 |
关于这4中工作方式,我们在介绍完TCON寄存器之后再进行介绍。
2 定时器/计数器控制寄存器TCON
定时器/计数器控制寄存器在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)分别为88H~8FH,该寄存器可以进行位寻址。TCON寄存器用来控制定时器的启、停,标志定时器的溢出和中断情况。单片机复位时TCON全部清0。这个寄存器的给位定义如下表所示。其中TF1、TR1、TF0和TR0位用于定时器/计数器的设置。IE1、IT1、IE0和IT0位用于外部中断的设置。
定时器/计数器控制寄存器TCON
位序号 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符号 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
位地址 |
8FH |
8EH |
8DH |
8CH |
8BH |
8AH |
89H |
88H |
TF1—定时器1溢出标志位。
当定时器1计满溢出时,由硬件使TF1置1,并且申请中断。进入中断服务程序后,由硬件自动清0。需要注意的是,如果使用定时器的中断,那么该位完全不用人为去操作,但是如果使用软件查询的方式的话,当查询到该位置1后,就必须用软件清0。
TR1—定时器1运行控制位。
由软件清0关闭定时器1。当GATE=1时,INT1为高电平且TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1。
TF0—定时器0溢出标志位。
该位与TF1功能和操作方法相同。
TR0—定时器0运行控制位。
该位与TR1功能和操作方法相同。
IE1—外部中断1请求标志。
当IT1=0时,外部中断INT1为电平触发方式,每个机器周期采用INT1引脚,若INT1引脚为低电平,则置1,否则IE1清0。
当IT1=1时,外部中断INT1为边沿触发方式,当采集到INT1由高电平向低电平的跳变时则将IE1置1。IE1=1表示外部中断1正向CPU申请中断。当CPU响应中断转向中断服务程序时,该位由硬件清0。
IT1—外部中断1触发方式选择位。
IT1=0,电平触发方式,引脚INT1上低电平触发中断。
IT0=1,边沿触发方式,引脚INT1上由高电平向低电平的跳变触发中断。
IE0—外部中断0请求标志。
这一位的用法与IE1相同。
IT0—外部中断0触发方式选择位。
这一位的用法与IT1相同。
3 定时器的4种工作方式
(1)方式0
下图为定时器工作在方式0下的原理图。
在此方式下,定时器配置为13位计数器,由TLn的低5位和THn的8位构成。TLn的低5位溢出时向THn进位。THn计数溢出置位TCON中的溢出标志位TFn(n=0,1)。当GATE=0时,如果TRn=1,则定时器计数。当GATE=1时,允许由外部输入INT1控制定时器1,INT0控制定时器0。这样可以实现脉宽测量。方式0的操作对于定时器0和定时器1都是相同的。
(2)方式1
方式1的工作原理如下图所示。方式1与方式0相比,除了使用了THn和TLn的全部16位外,其它用法与方式0完全相同。
(3)方式2
方式2的工作原理如下图所示。
在这种方式下,定时器/计数器0和1作为可自动重新装载的8位计数器(TLn),TLn用来计数,TLn的溢出,不仅置位TFn,而且将THn的内容重新装入TLn,THn内容由软件预置,重装时THn内容不变。方式2的操作对于定时器0和定时器1也都是相同的。
(4)方式3
对于定时器1,在方式3时,定时器1停止计数。
对于定时器0,在此方式下,定时器0的TL0和TH0作为2个独立的8位计数器。下图为方式3时定时器的原理图。TL0占用定时器0的控制位,包括C/T 、GATE、TR0和TF0以及INT0输入引脚。而TH0限定为定时器功能,不能用作计数器。TH0占用了定时器1的TR1和TF1。此时TH0控制定时器1中断。
方式3是为了增加一个附加的8位定时器/计数器而提供的。使单片机具有三个定时器/计数器。方式3只是用于定时器/计数器0,定时器T1处于方式3时相当于TR1=0,停止计数(此时T1可用来做串行口波特率发生器)。而T0可作为两个定时器用。
51单片机(十六)—— 定时器0和定时器1寄存器介绍及功能描述相关推荐
- 51单片机实验 LED半秒闪烁 定时器0方式2 中断实现
51单片机实验 LED半秒闪烁 定时器0方式2 中断实现 实验目的: P1.0接一个发光管,实现亮半秒灭半秒, 要求使用定时器0工作方式2,中断实现. C语言代码: #include "at ...
- 51单片机入门教程(5)——定时器中断
51单片机入门教程(5)--定时器中断 一.中断的概念 二.定时器中断 2.1 软件延时的不足 2.2 中断寄存器 2.2.1 中断允许控制寄存器 IE 2.2.2 定时器工作方式寄存器 TMOD 2 ...
- 定时器中断实验 编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00.01.02--98.99每间隔500ms加1显示. 程序: #include <reg51.h> ...
- 定时器中断实验 编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00.01.02--98.99每间隔500ms加1显示. 程序: #include <reg51.h> #defin ...
- 定时器中断实验 编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。
编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器. 程序: #include<reg51.h> sbit fm=P2^3; unsigned char cnt; int ...
- LPC2103学习之定时器0和定时器1
2019独角兽企业重金招聘Python工程师标准>>> 这两天学习LPC2103的定时器.开始看前面的寄存器介绍看的有点头晕,一会儿就搞混了.不过当我看到后面用图片描述定时器相关寄存 ...
- 51单片机复习:外部中断,定时器/计数器中断
中断: 什么是中断,就是打断,你一开始在做一件事,突然意外发生(中断源),你不得不停止手中的事,(中断响应),去处理那 件意外(中断服务),处理完意外后你继续做刚才那件事(中断返回),这就是中断,而单 ...
- 快速复习51单片机的外部中断、计数/定时器中断和串行口中断,加代码实现
目录 1.中断系统的概念 1.1中断的概念 1.2中断系统的概念 1.3中断系统的优点 1.4我们要说的三种中断源 2.外部中断 2.1 外部中断0 代码示范 2.2 外部中断 分析 3.计数/定时器 ...
- 51单片机点亮LED和使用定时器中断控制蜂鸣器发声
初学51单片机第一个实验一般都是以点亮LED灯开始,以下是使用Proteus仿真软件的实验效果. 实验需要仿真仪器: 示波器.LED.电压表.蜂鸣器.AT89C51 实验电路图: 实验代码 ...
- 51单片机(十七)—— 定时器2寄存器介绍及功能描述
这篇文章,我们对51单片机的定时器2的寄存器和功能进行介绍. 1 定时器2控制寄存器T2CON 定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计 ...
最新文章
- crossdomain.xml配置错误导致登录不了
- AI给老照片上色,真的准吗?技术圈和历史圈吵了1000帖
- EWM RF 开发常用代码
- Windows2008安装组件命令行工具ServerManagerCmd用法介绍
- Ubuntu Linux系统下搭建自己的Web服务器
- error LNK2019: 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void)”中被引用
- 字体编辑器_三款好用的字体编辑器分享,让您拥有属于自己的字体
- 2021 年 Web 开发的 7 大趋势,我只能说牛逼!
- 敏感型人格的特征,怎么改变敏感型性格?
- 远程控制客户端使用教程-multiDesk
- 电脑分屏工具 v1.22
- BZOJ 3654: [湖南集训]图样图森破 SA
- 【毕业设计】基于单片机的心率检测系统 - stm32 物联网 嵌入式
- 求 26个字母任意3个字母的所有组合
- ajax thinkphp配合ajax的简单列子
- java打印api_java 调用打印机API无法打印的问题,请问找到解决方案了吗?
- hibernate一对一主键唯一外键关联(二)
- android百度地图 okhttp,阳光沙滩-Android8.0用OkHttp3报错,而andoird9.0和10.0不报错
- eclipse选择java版本_Eclipse 版本选择
- Viso插入Word后空白过多解决方法