第6章 定时器计数器

目录

[6.1 定时计数器的结构框图](#6.1 定时计数器的结构框图)

[6.2 定时器的控制字](#6.2 定时器的控制字)

[6.2.1 TMOD:工作方式控制寄存器](#6.2.1 TMOD:工作方式控制寄存器)

[6.2.2 定时/计数器控制寄存器TCON](#6.2.2 定时/计数器控制寄存器TCON)

[6.3 定时/计数器的4种工作方式](#6.3 定时/计数器的4种工作方式)

[6.3.1 方式0、方式1(13位、16位定时计数方式)](#6.3.1 方式0、方式1(13位、16位定时计数方式))

[6.3.2 方式2(常数自动重装入)](#6.3.2 方式2(常数自动重装入))

[6.3.3 方式3(T0具有)](#6.3.3 方式3(T0具有))

[6.4 定时/计数器的输入信号](#6.4 定时/计数器的输入信号)

[6.5 定时器/计数器的编程](#6.5 定时器/计数器的编程)

[6.5.1 初值的计算](#6.5.1 初值的计算)

几种工作方式的最大定时时间

[6.5.2 编程方式](#6.5.2 编程方式)

[6.6 定时计数器的应用举例](#6.6 定时计数器的应用举例)

6.6.1:方式0的应用

[6.6.2 T0计数、T1定时工作于方式2](#6.6.2 T0计数、T1定时工作于方式2)

[6.6.3 含中断的定时/计数器响应程](#6.6.3 含中断的定时/计数器响应程)

6.1 定时计数器的结构框图

6.2 定时器的控制字

工作方式控制寄存器TMOD(地址89H)

GATE C/T M1 M0| GATE C/T M1 M0

注意:TMOD不能位寻址

控制寄存器TCON (88H)

-- TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

复位后两个寄存器的状态均为00H

6.2.1 TMOD:工作方式控制寄存器

**1、GATE:**门控位

GATE=1,T0、T1是否工作受外部引脚输入电平的控制,INT0 引脚控制T0运行,INT1引脚控制T1运行。 可用于测量在INT0或 INT1引脚出现的正脉冲的宽度

GATE=0,定时/计数器的运行不受外部引脚INT0或INT1的控制。(一般使用GATE=0

2、C/T位:计数器模式和定时器模式的选择位

C/T=0,定时器模式。内部计数器对晶振频率12分频后的脉冲计数(该脉冲的周期等于机器周期),每个周期计数值加1。若选择12MHz晶振,则计数频率为1MHz。从计数值便可求得计数的时间,所以称为定时器模式;

C/T=1,设置为计数器模式,计数器对由引脚T0(P3.4脚)或T1 (P3.5脚)输入的外部脉冲(负跳变)计数,允许最高计数频率 为晶振频率的1/24。

3、M1 、M0工作方式选择位

6.2.2 定时/计数器控制寄存器TCON

1、TF1位:T1计数溢出标志位。当T1计数溢出时,由硬件置 1,申请中断。进入中断服务程序后被硬件自动清0。

2、TR1位:T1计数运行控制位。由软件置1或清0。当GATE 位(TMOD.7)=0时,若TR1=1,允许T1计数TR1=0时,禁止T1计数。当GATE位=1时,TR1=1且 INT1=1时,允许T1计数。

3、 TF0位:T0计数溢出标志位,功能同TF1。

**4、TR0位:T0计数运行控制位,由软件置1或清0。**当GATE 位(TMOD.3)=0时,若TR0=1,允许T0计数; TR0=0时,禁止T0计数。当GATE位=1时,TR0=1且 INT0=1时,允许T0计数。

6.3 定时/计数器的4种工作方式

6.3.1 方式0、方式1(13位、16位定时计数方式)

T1工作于方式0的等效框图(M1M0=00、01)

定时/计数器T1工作在方式0时,为13位的计数器,由**TL1 的低5位和TH1的8位所构成。**TL1低5位溢出向TH1进位,TH1计数溢出置位TCON中的溢出标志位TF1。

GATE位的状态决定定时/计数器运行控制取决于TR1 一个条件还是TR1和INT1引脚这两个条件。

GATE=0时,A点电位恒为1,则只要TR1被置为1,B 点电位即为1,定时/计数器被控制为允许计数(定时/计 数器的计数控制仅由TR1的状态确定,TR1=1计数, TR1=0停止计数)。

**当GATE=1时,B点电位由INT1输入的电平和TR1的状 态确定,当TR1=1,且INT1=1时,B点电平才为1,**才允许定时器/计数器计数(计数控制由TR1和INT1二个条件控制)。

方式1时,TL1的8位都参与计数,因而属于16位 定时/计数器。其控制方式,等效电路与方式0完全相同。

6.3.2 方式2(常数自动重装入)

**TL1作为计数器,**当 TL1计数溢出时,在置1溢出标志TF1的同时,还自动的将TH1 中的常数送至TL1, 使TL1从初值开始重 新计数。

这种工作方式可以省去用户软件中重装常数的程序,简化定时常数的计算方法(确定计数初 值),可以相当精确的确定定时时间 。应用在波特率发生器

6.3.3 方式3(T0具有)

T0工作于方式3时,分为2个独立的8位计数器:TL0、TH0。

TL0使用T0的状态控制位C/T, GATE, TR0, INT0,而TH0被固定为一个8位定时器 (不能作外部计数方式),并使用定时器T1的 状态控制位TR1和TF1,同时占用定时器T1的中断源、

此时,定时/计数器T1可为方式0、方式1 和方式2,作为串行口的波特率发生器

工作于方式 3 的T0

T0工作于方式3时的T1

6.4 定时/计数器的输入信号

(1)、工作于定时器方式对内部时钟信号计数,内部时钟信号的频率为时钟振荡频率的1/12,即每个机器周期计数值加1。 例:采用12MHz频率的晶体时,每1微秒计数值将加1

由于定时的精度决定于输入脉冲的周期,因此 当需要高分辨率的定时时,应尽量选用频率较高的晶 体(MCS51最高为12MHz)

(2)、工作于计数器方式 :当定时/计数器用作计数器时,计数脉冲来自外部输入引脚T0或T1。当输入信号产生由1至0的跳变(即下跳变(下降沿))时,计数器的值增1。

需要注意:每个机器周期的S5P2期间,对外部输入进行采样。如在第一个周期中采得的值为1,而在下一个周期 中采得的值为0,则计数器加1。由于确认一次下跳变至少要用两个机器周期,即24个振荡周期,因此外部输入 的计数脉冲的最高频率为振荡器频率的1/24,同时输入信号的高、低电平保持一个机器周期以上。

理想的计数器输入信号:脉冲信号的高、低电平至 少要各保持一个机器周期以上,确保电平在变化 之前能被采样一次。

6.5 定时器/计数器的编程

初始化

1 根据要求给方式寄存器TMOD送一个方式控制字,以设定定时器的工作方式;

2 根据需要给TH和TL选送初值,以确定需要的 定时时间或计数的初值;

3 根据需要给中断允许寄存器IE送中断控制字, 以开放相应的中断和设定中断优先级; 也可用查询方式来响应定时器。

4 给TCON送命令字以启动或禁止定时/计数器的运行。

6.5.1 初值的计算

几种工作方式的最大定时时间

例如:

初值的计算:fOSC=12MHz,试计算定时时间2ms所需的定时器的初值。

6.5.2 编程方式

(一)、采用查询方式:

程序一直检测TF0(TF1) ,若TF0=1(TF1=1),说明定时时间到或计满数,需要软件清除溢出标志位TFx。

(二)、采用中断方式:

程序初始化时,设置定时器 溢出中断允许后,内部硬件自动检测到TF0 =1(TF1=1)时,自动响应中断 ,进入中断 服务程序。由硬件自动清除TFx

6.6 定时计数器的应用举例

6.6.1:方式0的应用

例1 选用T1方式0产生500us的定时,在 P1.1输出周期为1ms的方波; FOSC=6MHz。

注意:T0不用时的处理,一般设为方式0,禁止进入方式3

6.6.2 T0计数、T1定时工作于方式2

从P3.4 T0输入低频脉冲,要求该脉冲每发生一次跳 变时由P1.0输出一个500us的负脉冲,与此同时由 P1.1输出一个宽为1ms的正脉冲(6MHz晶振)。

先设T0为计数方式,工作于方式2,初值设为 0FFH,即加1即刻产生溢出。当外部输入一个负 跳变脉冲时,计数加1,并产生溢出,TF0=1;引起 CPU的T0中断。

中断服务程序内,对定时器T1设定初值,T1也工作于方式2。

6.6.3 含中断的定时/计数器响应程序

相关推荐
傍晚冰川1 小时前
【江协科技STM32】ADC数模转换器-学习笔记
笔记·科技·stm32·单片机·嵌入式硬件·学习
c-u-r-ry301 小时前
009---基于Verilog HDL的单比特信号边沿检测
嵌入式硬件·fpga开发
土豆198910212 小时前
简记_ MCU管脚的防静电处理
嵌入式硬件
Whappy0013 小时前
第三节:基于Winform框架的串口助手小项目---串口操作《C#编程》
linux·单片机·c#
爱吃奶酪的松鼠丶4 小时前
51单片机之蓝牙模块的使用
单片机·嵌入式硬件·51单片机
盐析大白兔5 小时前
STM32G431RBT6--(3)片上外设及其关系
stm32·单片机·嵌入式硬件
Joshua.X5 小时前
电脑总显示串口正在被占用处理方法
嵌入式硬件·串口·信息与通信·故障排查·232·485
与光同尘 大道至简7 小时前
中国嵌入式单片机就业形势分析
arm开发·python·单片机·嵌入式硬件·github·硬件工程
辰哥单片机设计9 小时前
STM32项目分享:智能家居语音系统(ASRPRO版)
stm32·单片机·智能家居
-一杯为品-10 小时前
【51单片机】程序实验15.DS18B20温度传感器
嵌入式硬件·mongodb·51单片机