定时器的引入

1. 简介
C51 中的定时器和计数器是同一个硬件电路支持的,通过寄存器配置不同,就可以将他当做定时器
或者计数器使用。
确切的说,定时器和计数器区别是致使他们背后的计数存储器加 1 的信号不同。当配置为定时器使
用时,每经过 1 个机器周期,计数存储器的值就加 1 。而当配置为计数器时,每来一个 负跳变(高电平转低电平) 信号 (信号从 P3.4 或者 P3.5 引脚输入 ) ,就加 1 ,以此达到计数的目的。
标准 C51 2 个定时器 / 计数器: T0 T1 。他们的使用方法一致。 C52 相比 C51 多了一个 T2
1.1概念解读
  • 定时器和计数器,电路一样
  • 定时或者计数的本质就是让单片机某个部件数数
  • 当定时器用的时候,靠内部震荡电路数数
  • 当计数器用的时候,数外面的信号,读取针脚的数据

1.2 定时器怎么定时
定时器的本质原理: 每经过一个机器周期,就加 1 : 寄存器
思考:
  • 什么是晶振:
晶振 ( 晶体震荡器 ) ,又称数字电路的 心脏 ,是各种电子产品里面必不可少的频率元器件。数字电
路的所有工作都离不开时钟,晶振的好坏、晶振电路设计的好坏,会影响到整个系统的稳定性。
  • 什么是时钟周期:
时钟周期也称为 振荡周期 ,定义为 时钟频率 倒数 (晶振的倒数) 。时钟周期是计算机中最基本的、最小的 时间单位 。在一个时钟周期内, CPU 仅完成一个最基本的动作。时钟周期是一个时间的量。更小的时钟周期就意味着更高的工作频率
  • 什么是机器周期:
机器周期也称为 CPU 周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶
段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为
机器周期。一般情况下, 一个机器周期由若干个时钟周期组成 (n倍的时钟周期)
 
  • 1经过了多少时间
当晶振频率是 11.0592MHz 的时候(zhao M=10^{6}),等于 11059.2KHz = 11059200Hz
机器周期 = 12 x 时钟周期 =12 x (1/ 时钟频率 ) = 12 / 时钟频率 秒 = 12 / 11059200 = 12 000 000 / 11059200 微秒 = 1.085 微秒
1.3 定时器编程
相关寄存器:
        TH0是高八位,TL0是低八位,初值均为00H
  • 在哪里加1,最大计数时间,也就是爆表了能计算多长
TH0/1 TL0/1 寄存器中加 1 ,默认是从 0 开始数数,最多能数 65536 下,累计计时 71ms
  • 如何算出10ms定时器的初值
就不让他从 0 开始数数, 10ms 需要数 9216 下,你让他从 65536-9126=56320 16 进制表示为
0xDC00 )开始数数
这样 TL0=0x00 TH0=0xDC.
关于 TCON(定时器控制寄存器)
每个位可以是单独的
TF1:   定时器/计数器T1 溢出标志 。T1被允许计数以后,从初值开始加1计数。当最高位产生溢出时由硬件置“1”TF1,向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0” TF1(TF1也可由程序查询清“0”)。
TR1:定时器T1的 运行控制位 。该位由软件置位和清零。当GATE(TMOD.7)=0,TR1=1时就允许T1开始计数,TR1=0时禁止T1计数。当GATE(TMOD.7)=1,TR1=1月INTI输入高电平时,才允许T1计数。
TF0:   定时器/计数器T0 溢出中断标志 。TO被允许计数以后,从初值开始加1计数,当最高位产生溢出时,由硬件置“1”TFO,向CPU请求中断,一直保持CPU响应该中断时,才由硬件清“0” TF0( TP0也可由程序查询清“0”)。
TR0:   定时器T0的 运行控制位 。该位由软件置位和清零。当GATE(TMOD.3)=0,TR0=1时就允许T0开始计数,TR0=0时禁止T0计数。当GATE(TMO.3)=1,TR0=1且INT0输入高电平时,才允许T0计数。
IE1:    外部中断1请求源(INT/P3.3)标志。正1-1,外部中断向CPU请求中断,当CPU响应该中新时由硬件清“0” IE1。
IT1:    外部中断1触发方式控制位。IT1=0时,外部中断1为低电平触发方式,当INTI(P3.3)输入低电平时,置位IE1。采用低电平触发方式时,外部中源(输入到INT)必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程执行完之前,外部中断源必须被清除(P3.3要变高),否则将产生另一次中断。当1T=1时,则外部中断1(INTL)端口由“1”→“0”下降沿跳变,激活中断请求标志位IE1,向主机请求中断处理。
IE0:    外部中断0请求源(INT0/P3.2)标志。0-1外部中断0向CPU请求中断,当CPU响应外部中断时,由硬件清“0”IEO(边沿触发力式》。
  •  怎么知道爆表

TCON寄存器的bit5TF0)能表示爆表:当爆表的时候,硬件会修改bit5(TF0)位上面的数据,改成 1(置1),如果不用中断,我们代码清零

  • 怎么开始计时
TCON 寄存器的 bit4 (TR0) ,通过编程让这个位为 1 的时候,开始计时,相当于按下了闹钟
  • 定时器使用是有很多种模式的

定时器模式寄存器:TMOD来选择定时器模式,选择工作方式1TMODbit0 bit1配置成0 1 16 的定时器功能

  • 四个二进制数表示一位的16进制数
  • 8421法进制的转换(方便人类来看,对计算机底层来说,不关心进制010101010
  • 配寄存器推荐用按位操作,清零的时候,对应的需要清零的位与上0,不需要清零的位与上1
  • 1的时候,需要置1的位置或1,不需要置一的位置或0

 关于TMOD(定时器模式寄存器)

TMOD模式
符号功能
TMOD.7/GATETMOD.7控制定时器1,置1时只有在下可脚为高及TR1控制位置1时才可打开定时器/计数器1。
TMOD.3/GATETMOD.3控制定时器0,置1时只有在T0脚为高及TR0控制位置1时才可打开定时器/计数器O。
TMOD.6/C/TTMOD.6控制定时器1用作定时器或计数器,清零则用作定时器(从内部系统时钟输入),置1用作计数器(从T1/P3.5脚输入)
TMOD.2/C/TTMOD.2控制定时器0用作定时器或计数器,清零则用作定时器(从内部系统时钟输入),置1用作计数器(从T0/P3.4脚输入)

TMOD.5/TMOD.4 

M1、M0

 0        0

 0        1

 1        0

 1        1          

定时器定时器/计数器1模式选择

13位定时器/计数器,兼容8048定时模式,TL1只用低5位参与分频,TH1整个8位全用。


16位定时器/计数器,TL1、TH1全用
8位自动重装载定时器,当溢出时将TH1存放的值自动重装入化1.
定时器/计数器1此时无效(停止计数)。

TMOD.1/TMOD.0 

M1、M0

 0        0

 0        1

 1        0

 1        1 

定时器/计数器0模式选择

13位定时器/计数器,兼容8048定时模式,TL0只用低5位参与分频,TH0整个8位全用。
16位定时器/计数器,TLO、THO全用
8位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0

定时器0此时作为双8位定时器/计数器。TL0作为一个8位定时器/计数器,通过标准定时器0的控制位控制、TH0仅作为一个8位定时器,由定时器1的控制位控制。

 后面有点乱码,总之用到最多的工作模式是  00  和  01 

也就是13位 和16位 

每个位不可单独使用,必须整体一起 

GATE 是门控位,如果为0,代表软件直接启动

C/T  0:定时    1:计数

M1 M0是工作方式的设置                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值