第6章 定时计数器控制
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表6-1TMOD的结构和各位名称、功能(字节地址89H)
高 4 位控制 T1
高 4 位控制 T1
门控位 定时/计数方式选择 工作方式选择 门控位 定时/计数方式选择
GATE
C/T
M1
M0
GATE
C/T
工作方式选择 M1 M0
02
(1)GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就:可以启动 定时/计数器工作;GATE=1时,用软件使TR0或TR1为1,同时外部中断 或 也为高电平时,才 能启动定时/计数器工作。即此ห้องสมุดไป่ตู้定时器的启动条件加上了 或 为高电平这一条件。
(2) :定时/计数模式选择位。 =0为定时模式,此时定时器计数的脉冲是由8051单片机 片内晶振器经12分频后产生的,每经过一个机器周期定时器(T0或T1)的数值加1,直至计数 器满产生溢出。例如:当8051采用6MHz晶振时,每个机器周期为2 s,计10个机器周期即为 20 s,即定时20 s。 =1为计数模式,通过引脚T0(P3.4v)和T1(P3.5)对外部脉冲信号计数。 当输入脉冲信号由1至0的下降沿时,计算器的值加1.在每个机器周期,CPU采样T0和T1的输入 电平。
(3) 采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修 改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。 典型的可编程定时芯片如Intel 8253。
本章要点: • 定时和计数的基本概念 • 定时/计数器的结构 • 单片机定时/计数器的特点 • 定时/计数器的使用(合理选择定时/计数器工作方式,初始值的计算,初始化程序的设计) 中断服务程序 • 定时/计数器工程中运用
CONTNTS
01
1.定时/计数器的结构 图6-1所示是定时/计数器的结构原理框图。
图6-1 定时/计数器的结构原理框图
定时/计数器的实质是加1计 数器(16位),由高8位和低8 位两个寄存器组成(T0由TH0和 TL0 组 成 , T1 由 TH1 和 TL1 组 成)。TMOD是定时/计数器的 工作方式寄存器,由它确定定时 /计数器的工作方式和功能; TCON 是 定 时 / 计 数 器 的 控 制 寄 存 器 , 用 于 控 制 T0 、 T1 的 启 动 和停止以及设置溢出标志。
从图6-6(c)中看出,T0方式3情况下的T1方式2,因定时初值能自动恢复,用作 波特率发生器更为合适。
03
图6-6 T0方式3情况下的T1工作方式
03
在这种情况下,定时/计数器通常作为串行口的波特率发生器使用,以确定串行通信 的速率,因为已没有TF1被定时/计数器0借用了,只能把计数溢出直接送给串行口。把 定时/计数器1当作波特率发生器使用时,只需设置好工作方式,即可自动运行。如果停 止它的工作,需送入一个把它设置为方式3的方式控制字即可,这是因为定时/计数器本 身就不能工作在方式3,如果硬把它设置为方式3,自然会停止工作。
(1)TF1:T1溢出中断请求标志。当定时/计数器T1计数溢出后,由CPU内硬件 自动置1,表示向CPU请求中断。CPU响应该中断后,片内硬件自动对其清0。TF1也 可由软件程序查询其状态或由软件置位清0。
02
(2)TF0:T0溢出中断请求标志。其意义和功能与TF1相似。 (3)TR1:定时/计数器T1 运行控制位。TR1=1,T1运行,TR1=0,T1停止。 (4)TR0:定时/计数器T0 运行控制位。TR0=1,T0运行,TR0=0,T0停止。
TF0是定时/计数器的溢出状态标志,溢出时由硬件置位,TF0溢出中断被CPU响应时,转入 中断时硬件清零,TF0也可由程序查询和清“零”。
工作方式0对定时/计数器高8位和低5位的初值计算很麻烦,易出错。方式0采用13位计数器 是为了与早期的产品兼容,所以在实际应用中常由16位的方式1取代。
03
【例6-1】设定时器T0选择工作方式0,定时时间为1ms,fosc/=6MHz。试确定 T0初值,计算最大定时时间T。
03
03
GATE位决定定时器运行口口那个值取决于TR0或TR0和INT0引脚。当门控位GATE=0时,由 于GATE信号封锁了或门,使引脚INT0信号无效,T0运行控制由TR0单独控制。当TR0=1时,接 通模拟开关,定时/计数器工作;当TR0=0,则模拟开关断开,定时/计数器停止工作 。当 GATE=1时,T0运行控制由TR0和INT0两个条件共同控制。如果TR0=1,同时INT 0=1,与门输 出为1,定时/计数器方可工作。
CONTNTS
03
8051系列单片机定时/计数器有4种工作方式,由TMOD中M1M0的状态确定。前3种工作 方式,T0 和T1除所使用的寄存器、有关控制位、标志不同外,其他操作完全相同。T1无方式 3。下面以T0为例进行分析。
1. 工作方式0 当M1M0=00时,定时/计数器工作于方式0,如图6-2所示。在方式0情况下,内部计数器 为13位。由TL0低5位和TH0 8位组成,特别需要注意的是TL0低5位计数满时不向TL0的第6位 进位,而是向TH0进位,13位计满溢出,TF0置1,最大计数值213=8 192(计数器初值为 0)。
16位计数器,最大计数值为216=65 536。用作定时器时,若fOSC=12 MHz,则方式0
最大定时时间为8 192 μs,方式1最大定时时间为65 536 μs。
03
3.工作方式2 当M1M0=10时,定时/计数器工作于方式2,如图6-4所示。在方式2情况下,定时 /计数器为8位,能自动恢复定时/计数器初值。在方式0、方式l时,定时/计数器的初值 不能自动恢复,计满后若要恢复原来的初值,必须在程序指令中重新给TH0、TL0赋值。 但方式2与方式0、方式1不同。方式2仅用TL0计数,最大计数值为28=256。计满溢出 后,进位TF0,使溢出标志TF0=1,同时原来装在TH0中的初值自动装入TL0(TH0中 的初值允许与TL0不同)。所以,方式2既有优点,又有缺点。优点是定时初值可自动 恢复,缺点是计数范围小。因此,方式2适用于需要重复定时,而定时范围不大的应用 场合,特别适合于用作较精确的脉冲信号发生器。
虽然对输入信号的占空比没有特殊要求,但是为了确保某个电平在变化之前至少被采样一 次,要求电平保持时间至少是一个完整的机器周期,又由于检测一个1至0的下跳变需要两个机 器周期,故最高计数频率为fosc/24,即晶振频率的1/24。
02
(3)M1M0:工作方式设置位。定时/计数器有4种工作方式,由M1M0进行设置。见表6-2。
特别需要注意,TMOD不能进行位寻址,所以只能用字节指令设置定时/计数器的工 作方式。CPU复位时TMOD所有位清0,上电复位后应重新设置。
02
2.控制寄存器TCON
TCON的低4位用于控制外部中断,已在前面介绍。高4位用于控制定时/计数器的 启动与中断申请。TCON的结构、位名称、位地址和功能见表6-3。
CONTNTS
C/T
02
8051系列单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方 式,TCON用于控制其启动和中断申请。
1. 工作方式寄存器TMOD 工作方式寄存器TMOD用于设置定时/计数器的工作方式,高4位用于T1,低4位用于T0。 TMOD的结构和各位名称、功能见表6-1。
6.1 8051定时/计数器的结构和工作原理 6.2 定时/计数器的控制寄存器 6.3 定时/计数器的工作方式 6.4 定时/计数器用于外部中断扩展 6.5 定时/计数器应用 6.6 定时器2 6.7 看门狗 6.8 实践训练—简易频率计设计 6.9 思考与练习
在单片机的应用系统中,常常会有定时控制的需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行 计数。8051系列单片机片内集成有两个可编程的定时/计数器:T0和T1。它们既可以工作于定时模式,也可以工作于外部 事件计数模式。此外,T1还可以作为串行接口的波特率发生器。
要实现定时功能,可以采用下面三种方法: (1)采用软件定时:让CPU循环执行一段程序,通过选择指令和安排循环次数,以实现软件定时。软件定时不占用 硬件资源,但占用了CPU时间,降低了CPU的利用率。 (2)采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。此种方 法实现容易,改变电阻和电容值,可以在一定范围内改变定时值。但在硬件连接好以后,定时值与定时范围不能由软件进 行控制和修改,即不可编程。 • 中断的基本概念 • 8051中断系统的结构 • 单片机中断系统 • 8051中断的使用 • 中断服务程序
01
2.定时/计数器的工作原理 作为定时/计数器的加1计数器,其输入的计数脉冲有两个来源,一个是由系统的
时钟振荡器输出脉冲经12分频后送来,另一个是T0或T1引脚输入的外部脉冲源。每 来一个脉冲,计数器加1,当加到计数器为全1时,再输入一个脉冲,就使计数器回0, 且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断 允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计 数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数 器的计数值。
01
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12 个振荡周期,即计数频率为晶振频率的1/12,12 MHz为1 μs、6 MHz为2 μs)。 计数值乘以机器周期就是定时时间。
设置为计数器模式时,外部事件计数脉冲由T0(P3.4)或T1(P3.5)引脚输入 到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高 电平输入,而下一周期又采样到一低电平输入时,则计数器加1,更新的计数值在下 一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器 周期,因此要求被采样的电平至少要维持一个机器周期,所以最高计数频率为晶振 频率的1/24。当晶振频率为12 MHz时,最高计数频率不超过1/2 MHz,即计数脉 冲的周期要大于2 μs。
解答过程: 当T0处于工作方式0时,加1计数器为13位。设T0的初值为X,则
(213 X ) 1 12 1103 s 6 106
X 7692
转换为二进制数:X=1111000001100B T0的低5位:01100B=0CH T0的高8位:11110000B=F0H
03
T0最大定时时间对应于13位计数器T0的各位全为1,即(TH0=FFH),(TL0) =1FH。
则
T 213 12 16.384ms 6
03
2. 工作方式1 当M1M0=01时,定时/计数器工作于方式1,如图6-3所示。在方式1情况下,内部 计数器为16位。由TL0作低8位,TH0作高8位。16位计满溢出时,TF0置1。
03
方式1与方式0的区别在于方式0是13位计数器,最大计数值213=8 192;方式1是
03
03
4.工作方式3 当M1M0=11时,定时/计数器工作于方式3,但方式3仅适用于T0,T1无方式3。 (1)T0方式3。在方式3情况下,T0被拆成2个独立的8位计数器TL0、TH0,如图6-5所示。
03
① TL0使用T0原有的控制寄存器资源:TF0、TR0、GATE、 、 ,组成一个8位的定 时/计数器。
② TH0借用T1的中断溢出标志TF1、TR1,只能对机内机器周期脉冲计数,组成一 个8位定时器。
(2)T0方式3情况下的T1。T1由于TF1、TR1被T0的TH0占用,计数器溢出时,只 能将输出送至串行口,即用作串行口波特率发生器,但T1工作方式仍可设置为方式0、 方式1、方式2, 控制位仍可使T1工作在定时/计数器方式,如图6-6所示。
CONTNTS
04
实际应用系统中如需有两个以上的外部中断源,而片内定时/计数器未使用时,可利用定时/ 计数器来扩展外部中断源。扩展方法是,将定时/计数器设置为计数器方式,计数初值设定为满 程,将待扩展的外部中断源接到定时/计数器的外部计数引脚。从该引脚输入一个下降沿信号, 计数器加1后便产生定时/计数器溢出中断。因此,可把定时/计数器的外部计数引脚作为扩展中 断源的中断输入端。