第五章计时器计数器.ppt

上传人:本田雅阁 文档编号:2561529 上传时间:2019-04-08 格式:PPT 页数:29 大小:751.01KB
返回 下载 相关 举报
第五章计时器计数器.ppt_第1页
第1页 / 共29页
第五章计时器计数器.ppt_第2页
第2页 / 共29页
第五章计时器计数器.ppt_第3页
第3页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第五章计时器计数器.ppt》由会员分享,可在线阅读,更多相关《第五章计时器计数器.ppt(29页珍藏版)》请在三一文库上搜索。

1、5.1 定时器/计数器的结构及功能,定时和计数功能在控制系统中应用十分普遍。为此,单片机内配置了23个16位的可编程定时/计数器。它们的工作方式和工作模式可通过对特殊功能寄存器TMOD和TCON编程来设置.,一、定时器/计数器的内部结构,计数输脉冲入端T0、T1、T2,方式控制寄存器TMOD确定Ti的功能和工作模式,控制寄存器TCON控制 Ti的启动和停止还包含了Ti的溢出标志,定时/计数器由两个8位的计数器构成,定时器计数器的功能: (1) 定时器计数器的核心是一个可预置的加1计数器其基本功能是计数加1。 若是对单片机的T0或T1引脚上输入的1到0的跳变进行数, 即是计数功能。 若是对单片机

2、内部的机器周期(时 钟 信号)进行计数, 即是定时 功能。 (2)计数器的计数初值可编程设定。 (3)计数器的启动可由软件和硬件控制, 其工作方式可通过 软件选择。 (4) 计数器的长度(位数)可用软件设定 (5) 定时器计数器是16位,最大计数值为65536,超过最 大值后定时 器计数器会溢出。 (6)定时 器/计数器除了可用作定时 器或计数器之外,还可用作串行接口的波特率发生器。,二、与定时/计数器有关的控制寄存器,作用:定义T0、T1工作方式。格式如下:, 1. GATE定时/计数器启动方式控制位(又称门控位)。,GATE=1时, Tx的计数受INTx 引脚 输入电平控制,只有INTx为

3、高电平且TRx置 1 时, TX才被选通工作。利用这种控制方式,可测量在INTx端出现的正脉冲的宽度。,1、 T0、T1的方式控制寄存器TMOD,低4位定义T0工作方式,高4位定义T1工作方式,GATE=0时, TX的计数不受INTX输入电平控制,只要 TR0 (或 TR1)置 1, 定时器 /计数器就被选通工作.,2. CT计数/定时功能选择位 C /T1时,作计数器用,对引脚T0(P3.4)或T1(P3.5)上的输入脉冲(外部事件)计数,当检测到发生从高到低的负跳变时,计数器加1。加法计数溢出时可向CPU发出中断请求信号。,计数器在每个机器周期的S5P2期间采样Ti引脚, 故识别引脚上的负

4、跳变需要2个机器周期(24个振荡周期)。因此, 可计数的外部脉冲最高频率为fosc/24, 当fosc为12MHZ时,最高计数频率为500KHZ, 超出此频率计数将出错,MCS-51单片机的时序,51单片机的时序定时单位共有4个,从小到大依次是:振荡周期(拍)、状态周期(时钟周期)、机器周期、指令周期,1)振荡周期(节拍P),振荡周期又称为或拍(P) ,它是晶体的振荡周期,或外部振荡脉冲的周期。,2)状态周期(S),振荡信号经内部时钟电路二分频后成为单片机的时钟周期也称为状态周期(S)。一个状态周期包含2个拍,分别称为P1和P2。,3)机器周期,通常把CPU完成一个基本操作所需要的时间称为机器

5、周期。一个机器周期由6个状态即12拍组成,依次表示为S1P1,S1P2,S2P1,S2P2S6P1,S6P2。 1个机器周期 = 12个振荡周期( fosc) = 6个状态周期。,4)指令周期,指令周期就是执行一条指令所需要的时间,它是MCS-51单片机中最大的时序单位,一条指令周期应在14个机器周期范围内。,振荡周期=1/晶振频率 若晶振频率为12MHz,则有: 机器周期=12振荡周期=1s 若晶振频率为6MHz,则有: 机器周期=12振荡周期=2s,C/T0时,作定时器用,对内部机器周期计数(采用晶振脉冲的12分频信号作为计数器的计数脉冲), 由于机器周期是定值,所以,这种计数就是定时。当

6、fosc为12MHZ时,则定时器的计数频率为1MHZ.,3. 工作方式选择位 M1、M0,定时器/计数器工作方式选择,TF0、TF1 分别是T0、 T1 的溢出标志位, 计数器溢出时置 1, 申请中断, 中断响应后自动清 0。TF产生的中断申请是否被接受, 要由相应中断是否开放来决定。,2 ) T0、T1的控制寄存器TCON,TR0 、 TR1分别是T0 、 T1 的运行控制位, 软件置 1 后, T0 、 T1 才开始工作, 在系统复位时被清 0。,5.2 T0、T1 的工作方式与应用,51定时/计数器的四种工作方式中, 除方式3外,其它三种工作方式的基本原理相同。,作计数器用时,对芯片引脚

7、T0(P3.4)或T1(P3.5)上的输入脉冲计数;作定时器用时,对内部机器周期脉冲计数。加法计数溢出时可向CPU发出中断请求信号。,定时器/计数器T0有四种不同的工作方式,而T1只有三种工作方式(即方式0、方式1和方式2)。,5.2.1、 方式 0及其应用,T1,INT1,TL1,TH1,TF1,TR1,方式0工作时,是个13位定时器/计数器(TL的高3位未使用),GATE0时,定时计数启、停仅由 TR1决定。GATE1时,启、停由TR1和INT1两者决定。,计数溢出时TF1置位。,控制启动,图5-2 T1/ T0方式0逻辑结构,X=213N=8192 N,其中: N是实际要求计数值 X是写

8、入THx、TLx的计数初值 最小计数值为1 ,其对应应写入计数器的计数初值 X=8191 最大计数值8192,其对应应写入计数器的计数初值 X=0.,即方式0的计数范围为: 1 8192,定时时间T的确定公式:,T=NT机器=(8192-X) x (12 xT震荡),其中: N, X是的含义同上,若fosc=12 MHz,则T机器=1 s,定时范围为18192 s。,方式0工作时,根据要求的计数值求应写入计数器的计数初值 X 的方法:,方式0工作时,根据要求的计数值求定时时间T的方法:,5.2.2 方式 1及其应用,图 5 -3 T1、T0方式 1逻辑结构,T1,TL1,TH1,TF1,TR1

9、,INT1,方式1工作时为16位定时器/计数器。此时,THx、TLx都是8位加法计数器,其它部分与工作方式0相同。,计数初值 X的确定公式:,X=216-N=65536-N,方式1工作时计数范围为 : 165 536,定时时间T的确定公式: T= NT机器=(65536-X) T机器 =(65536-X)x (12 x T振荡),其中: X、 N含义与前述相同,如果fosc=12 MHz,则T机器=1 s,定时范围为165 536 s,方式1工作时的计数初值X、定时时间T的确定,5.2.3 方式 2及其应用,图 5-4 T1方式 2逻辑结构图,方式2是8位自动重装入定时器/计数器。它将16位计

10、数寄存器分为两个8位寄存器,组成一个可重载的8位计数寄存器,TLx作为计数器,THx作为计数常数寄存器。,INT1,T1,TL1,TH1,TF1,TR1,计数溢出时,在将TFx置1的同时自动将THx的内容装入TLx中,并重新开始从初值计数。,方式2工作在初始化时,必须将THx、 TLx赋予相同的计数初值。,定时时间T确定公式: T=NT机器=(256-X) x T机器 =(256-X) x(12 xT振荡x12) 如果fosc=12 MHz,则T机器=1 s,定时范围为1256 s。,计数初值确定公式: X= 28-N=256-N 计数范围为: 1256,其中: X、 N含义与前述相同,方式2

11、能自动重装,省去了软件中重新写入计数初值的程序,可较精确定时,因而,方式2适用于做脉冲信号发生器和串行口波特率发生器,方式2工作时的计数初值X、定时时间T的确定,5.2.4 方式 3及其应用,图 5-4 T0 方式 3逻辑结构图,方式3中T0被分成两个独立的8 位计数器,T0方式3适用于要增加一个额外的8位定时器的场合,由于其TH0占用T1的控制位,故此时T1只可设为方式02,并只能用在不需要中断控制的场合。,TH0占用T1的控制位,T0工作在方式3时 ,T0和T1的设置和使用是不同的。, 工作方式3下的定时器/计数器T0 T0设置为方式3时,使TL0、TH0成为两个互相独立的8位定时器计数器

12、。,其中,TL0既可做计数又可做定时使用。 TL0使用了T0本身的控制位和引脚,它的工作情况与方式0、方式1类似。,但方式3下的TH0 只能用作定时器,它借用T1的控制位TR1、TF1,也就是说TH0控制了定时器T1的中断,占用了T1的中断矢量,它的启动、停止受TR1状态控制。但是它没有占用GATE、C/T,而且它只能对内部时钟计数,所以,只能做定时用。, T0工作方式3下的定时器/计数器T1,T1选方式0、1时,T1选方式2时,作串行口波特率发生器时,T1的计数输出直接去串行口。因没有启动控制,故设置好工作方式后串行口波特率发生器即自动开始运行。,要停止T1,只需向T1送一个将其设为方式3的

13、控制字即可,因T1是不可在方式3下工作的,T0方式3时,T1的逻辑结构图,在T1用做波特率发生器时,应将T0设置为方式3。,由于T1的GATE、C/T,没有被占用,故T0方式3下,T1既可做定时也可做计数用,可选择工作方式0方式2。,1.根据要求的计数值求写入计数器的计数初值 X X = 2L - N 式中:N为要求的计数值,L为计数器的长度(位数) 方式0时 L=13 2138192 方式1时 L16 21665536 方式2时 L8 28256,5.2.4 定时/计数器的计数初值X、定时时间T的确定,方式0的计数范围为: 1 8192 方式1的计数范围为: 1 65 536 方式2的计数范

14、围为: 1 256,定时时间T的确定公式:T= NT机器 = (2L -X) x T机器 =( 2L -X)x (12 x T振荡) =( 2L -X)x (12 x 1/fosc) 其中:N为要求的计数值,X为写入计数器的计数初值, L为计数器的长度(位数),2 . 定时时间T和溢出率计算,当fosc=12 MHz时,T机器=1 s,则:,方式0的定时范围为: 18192 s。 方式1的定时范围为: 165 536 s 方式2的定时范围为: 1256 s。,X = 2LTfOSC / 12,定时时间的倒数即为溢出率,X,T,根据要求的定时时间T, 确定应写入计数器的计数值X,方式0时:X =

15、XHXL,XH高8位,XL低5位 (13位) MOV THi,XH ;送高8位 MOV TLi,XL ;送低5位(高3位设为0) 方式1时:X=XHXL,XH 高8位,XL低8位 (16位) MOV THi,XH ; 送高8位 MOV TLi,XL ; 送低8位。 方式2时: X8位重装载 (8位) MOV THi,X ;送高8位 MOV TLi,X ;送低8位。,3. 写计数初值的方法:,在应用单片机的定时器/计数器资源时,程序设计一般要按照以下几个步骤进行:,(1)工作方式控制寄存器的初始化 根据题目要求选定用T0或T1,并确定做定时还是计数,各计数器工作方式,确定方式控制字送TMOD,(

16、2)装载T0或T1的初值 根据题目要求达到的定时时间T或输出信号的周期、频率以及所设定的工作方式(计数器位数) 及晶振频率fosc,计算要写入的计数初值X(十进制数),并一定将其转换成二进制,分别送入THi、TLi。,4. 使用定时/计数器时的程序设计,(3)开中断,(4)启动定时器/计数器,若确定定时/计数器工作于中断方式,则在初始化时开放定时/计数器的中断及总中断(如用汇编,还要在程序前面要设好中断矢量)。如有优先级别要求还要设定IP的PTi位.,(5)设计中断服务子程序 根据题目的要求编制相应的中断服务程序。,在合适的时候设置TRx,启动计数器开始计数.,例:ET0 = 1; EA =

17、1;,void T0_srv (void) interrupt 1 using 1 TL0=X%256; TH0=X/256; . 中断服务程序 ,TR0(TR1)= 1。,5.4 定时/计数器的应用,在实时系统中,使用定时器定时与软件定时完全不同,在定时器定时计数时,其他事件可以继续进行,而软件定时则不可能。,例1 设单片机的fosc=12MHz,要求在P1.0脚上输出周期为2ms的方波。,解: 周期为2ms的方波要求定时间隔1ms,每次 时间到P1.0取反。,若采用T0,选方式1,定时,则需要的计数初值为:,X = 216TfOSC / 12,X =64536,TMOD: 00000001

18、B,(1)用定时器0方式1,采用查询方式。程序如下: #include sbit P1_0=P10; void main (void) TMOD=0x01; /定时器0方式1 TR0=1; for( ; ; ) TH0=-(64536/256); /装载计数初值 TL0=-(64536 %256); do while(!TF0); /查询等待TF0为1 P1_0=!P1_0; /定时时间到P1.0反相 TF0=0; /软件清TF0 ,(2)用定时器方式1,采用中断方式,程序如下: #include sbit P1_0=P10; void timer 0 (void) interrupt 1 using 1 /定 /时器0中断处理程序 P1_0=!P1_0; /P1.0取反 TH0=-(64536/256); /计数初值重装载 TL0=-(64536%256); ,void main (void) TMOD=0x01; /设T0方式1 P1_0=0; TH0=-(64536/256); /预置计数初值 TL0=-(64536%256); EA=1; /中断初始化,开CPU中断 ET0=1; /允许T0中断 TR0=1; /启动T0 do /利用永真循环等待T0中断 while (1); ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1