51单片机入门:定时器

定时器的介绍

定时器 :51单片机的定时器属于单片机的内部资源,其电路的设计连接和运转均在单片机内部完成。根据单片机内部的时钟或者外部的脉冲信号对寄存器中的数据加1,定时器实质就是加1计数器 。因为又可以定时又可以计数,又称之为定时/计数器

作用:在写程序时经常会用到延时代码,比如用循环来实现延时(即让CPU不断进行记数)。但CPU在记数(执行延时)的时候做不了其他的事情,且这种延时是不精确的。因此需要一个工具来帮助CPU进行记数,而这个工具便是定时器。

例如你想在十分钟后做某事,如果身边没有任何工具,你就要自己数600秒,而在你数数时无法分心做其他事。但如果身边有个闹钟,就能定一个10分钟的闹钟,而在这10分钟内你可以做别的事情。

需要注意的是定时器大部分使用情况要搭配中断系统

与定时器相关的寄存器:TH1、TL1、TH0、TL0、TMOD、TCON。

与中断相关的寄存器:IE、IP。


定时与计数

定时功能 :通过内部或外接的晶振(即SYSclk),对内部寄存器中的值进行递增计数,当计数到预设值时,定时器会产生一个中断请求信号,通知CPU进行相应处理。(相当于闹钟响了提醒你该做事情了,即定时作用)

计数功能:主要通过外部引脚(T0 Pin/T1 Pin)来实现,只有当外部事件发生时才会产生一个脉冲信号,触发内部寄存器进行加1操作。(它不像定时功能一样以固定的频率递增计数)


定时器资源

以STC89C52为例,其定时器个数为3个(T0、T1、T2),T0、T1与传统的51单片机兼容,T2是此型号单片机增加的资源。

注意:定时器的资源和单片机的型号关联在一起,不同型号可能含有不同的定时器个数和操作方式。但一般来说,T0、T1的操作是所有51单片机共有的。


CPU时序

指令周期 :CPU每取出一条指令并执行这条指令,都要完成一系列的操作,这一系列操作所需要的时间称为指令周期。

机器周期(CPU周期) :在计算机中,为了便于管理,常把一条指令的执行过程 划分为若干个阶段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为机器周期。

时钟周期 :时钟周期T 又称为振荡周期 ,由单片机片内振荡电路OSC产生,常定义为时钟脉冲频率 的倒数,是时序中最小的时间单位。例如,若某单片机时钟频率为1MHz,则它的时钟周期T应为1μs。

三种周期的关系:指令周期由若干(通常1~4)个机器周期组成,而机器周期又包含若干(通常为12)个时钟周期。

状态周期:每个状态周期为时钟周期的两倍。

例如:当外接晶振为12MHz时,51单片机相关周期的具体值为:振荡周期=1/12us;状态周期=1/6us;机器周期=1us;指令周期=1~4us;


定时器工作模式

对于STC89C52的T1和T0均有四种工作模式:

|-----|------------|
| 模式0 | 13位定时器/计数器 |
| 模式1 | 16位定时器/计时器 |
| 模式2 | 8位自动重装模式 |
| 模式3 | 两个8位计数器 |

其中模式1最为常用,故只介绍模式1。模式1的内部连接如下所示,可分为三个部分:

SYSclk :系统时钟,即晶振频率,通常为12MHz或11.0592MHz。

进位规则:模式1下,T0的定时器配置为16位定时/计数器,由TL0和TH0的8位(共16位)构成。当TL0的8位溢出时向TH0的8位进位 ,TH0技术溢出时,向TCON中的溢出标志为TF0进位(TF0由0变1)。

计数速率 :STC89C52系列的单片机的定时器有两种计数速率(分频):一种是12T模式 ,每12个时钟加1,与传统8051单片机相同;另一种是6T模式,每6个时钟加1,速度是传统8051单片机的两倍。

计数器由时钟提供提供脉冲信号,经过分频器(12分频或6分频),每来一次脉冲则计数器加1,当计数到达65535时下一个脉冲会溢出,触发中断(即告诉CPU闹钟响了该干事情了)。

工作方式寄存器TMOD

TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1,具体如下:

|----------|----|----|-----|------|----|----|-----|------|
| 位 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 字节地址:89H | M0 | M1 | C/T | GATE | M0 | M1 | C/T | GATE |

C/T为定时/计数选择位,寄存器TMOD中的一位,用来控制选择开关:当C/T为1时,连接T0 Pin,为计数器功能;当C/T为0时,连接SYSclk(系统时钟),为定时器功能。

GATE为门控位,当GATE为0时,经过非门为1,进入或门(因为或门为有1出1,因此此时可忽略INT0),再进入与门,当TR0为1时才能出1,这样contorl开关才能连通;当GATE为1时,INT0必须为1,TR0为1时开关才能连通。

M0/M1为四种工作模式设置位

|------|------|-----------|
| M0M1 | 工作模式 | 说明 |
| 0 0 | 模式0 | 13位定时/计数器 |
| 0 1 | 模式1 | 16位定时/计数器 |
| 1 0 | 模式2 | 8位自动重装 |
| 1 1 | 模式3 | 两个8位计数器 |

工作方式寄存器TCON

TCON的高四位用于定时/计数器的启动和中断申请;低四位用于外部中断。此处只介绍高四位。

|----------|---|---|---|---|-----|-----|-----|-----|
| 位 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 字节地址:88H | | | | | TR0 | TF0 | TR1 | TF1 |

TF1:T1溢出中断请求标志,T1计数溢出时由硬件自动使TF1=1。CPU响应中断后硬件自动使TF1=0。(TF1也可以由软件置1或0)

TR1:T1运行的控制位。当TR1=1时,T1开始工作;当TR1=0时,T1停止工作。TR1由软件控制,故软件可控制定时/计数器的启动与停止。

TF0、TR0:针对于T0,作用与上述的TF1、TR1一样。


中断系统

中断系统是为了使CPU具有对外界紧急事件的实时能力而设置的。

中断 :当CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完后再回到原来被中断的地方,继续原来的工作。实现这种功能的部件称为中断系统

中断源:请示CPU中断的请求源称为中断源。中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断时,要进行优先级排序(优先处理最紧急的中断请求源)。CPU总是先响应优先级别高的中断请求。

中断嵌套 :当CPU正在处理一个中断源请求时,发生了另一个优先级高的中断源请求。CPU暂停对原来的中断源的服务程序,转而去处理优先级更高的中断请求源,处理完后再回到原低级中断服务程序,最后回到主程序。此过程为中断嵌套 。这样的中断系统为多级中断系统 ,没有中断嵌套的系统为单级中断系统

相关推荐
蓝斯4978 小时前
从.到实现一个Windows上的虚拟hid键盘设备
windows·单片机·计算机外设
熙芯XiChip9 小时前
硬实时与软实时RTOS核心区别
嵌入式硬件
伟大的前程9 小时前
unsigned int 定义的变量 在 电脑的 64 位系统中 和 32 位 cortex-m0 和 8 位的 51 单片机
单片机·嵌入式硬件
小渔村的拉线工9 小时前
1.HPM6E80 解析芯片整体工作原理和存储架构
单片机·嵌入式硬件·mcu·架构·hpm6e80
熙芯XiChip10 小时前
CAN与CANopen的本质区别
单片机
lilihewo11 小时前
Altium Designer 封装库的创建(分享pcb 3D封装库)
嵌入式硬件·51单片机
神罚天下ET11 小时前
典型arm位单片机启动流程(从上电到main.c)
c语言·arm开发·单片机
碧海银沙音频科技研究院12 小时前
蓝牙耳机使用WSDF5361锂保芯片进入船运模式实现方法
嵌入式硬件·算法
Zevalin爱灰灰13 小时前
模拟信号链电路——基于TL431的电压基准电路
单片机·嵌入式硬件
csdn杰哥14 小时前
瑞萨单片机开发教程[二十七] DTC 外部中断触发传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5