《51单片机定时器的使用和详细讲解》由会员分享,可在线阅读,更多相关《51单片机定时器的使用和详细讲解(50页珍藏版)》请在金锄头文库上搜索。
1、定时器的讲解和使用有对定时器2的详细讲解第八章 定时器1章节概述 很棒n8.1 概述n8.2 定时器T0和T1的结构n8.3 定时器工作模式n8.4 定时器T228.1 概述n定时器是单片机的重要功能模块之一,在检测 、控制领域有广泛应用。n定时器常用作定时时钟,以实现定时检测、定 时响应、定时控制,并且可用于产生ms宽的 脉冲信号,驱动步进电机n定时和计数功能最终都是通过计数实现的,若 计数的事件源是周期固定的脉冲,则可以实现 定时功能,否则只能实现计数功能。因此可以 将定时和计数功能由一个部件实现。3n实现定时和计数的方法一般有:软件定时、专用硬件电路和可编程定时器/计数器三种方法。q软件
2、定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但增加CPU开销。q专用硬件电路定时:可实现精确的定时和计数,但参数调节不便。q可编程定时器计数器:不占用CPU时间,能与CPU并行工作,实现精确的定时和计数,又可以通过编程设置其工作方式和其它参数,因此使用方便。 4n定时器的基本工作原理是:利用计数器对固定周 期的脉冲计数,通过寄存器的溢出来触发中断。q具体应用步骤:n1)根据需要的定时时间,结合单片机的晶振频率 ,计算出寄存器的初始值n2)根据需要开中断n3)启动定时器q若已规定用软件启动,则可把TR0、TR1或TR2置“1”;若 已规定由外中断引脚电平启动,则需给外引脚步
3、加启动电 平。当实现了启动要求后,定时器即按规定的工作方式和 初值开始计数或定时。 5nXC866单片机有三个16位的定时器定时器0、 定时器1和定时器2。n定时器0、1各具有四种工作模式;定时器2有两 种工作模式。n定时器0、1和定时器2的任何一种工作模式均可 通过程序对相应寄存器进行设置来选择。n定时器在定时时间到时,可以由程序决定是否产 生中断请求信号,进而判断是否执行中断程序。n但是,无论中断请求信号是否产生,当定时器在 定时时间到时,定时器的溢出标志位TF0(TF1) 由硬件置“1”。68.2 定时器T0和T1的结构n定时器T0和T1的结构如图8-1所示。图8-1 定时器T0和T1结
4、构图核心寄存器 16位加 法计数器定时器模 式寄存器71.16位加法计数器n16位加法计数器是定时器的核心,图8-1中用寄存 器TH0、TL0及TH1、TL1表示。nT0加法计数器的高8位和低8位分别用TH0、TL0表 示nT1加法计数器的高8位和低8位分别用TH1、TL1 表示n高8位和第8为可分别单独使用n当定时器工作时,加法计数器对内部机器周期脉 冲Tcy计数。 Tcy8n2.模式寄存器(TMOD)TMOD用来选择定时器0、1的工作模式,低4位 用于定时器0,高4位用于定时器1,其组成如图8 -2所示。图8-2 模式寄存器组成方式 选择00:模式001:模式110:模式2 11:模式3方
5、式 选择T1T09n3.控制寄存器(TCON)qTCON高4位用于控制定时器0、1的运行;低4位用于控 制外部中断,与定时器无关。 定时器0、1运行控 制位TR0(TR1): TR0(TR1)=1 启动 TR0(TR1)=0 停止定时器0、1溢出标志 TF0(TF1): 溢出时该位由硬件自 动置1,响应中断后 ,由硬件自动清0图8-3 控制寄存器组成10n4.中断使能寄存器(IEN0)qIEN0中的ET0(ET1)位控制定时器0、1是否产生中断 请求信号。为0时不产生中断请求信号,为1时允许产 生中断请求信号。其结构如图8-4所示。 图8-3 中断使能寄存器组成定时器0中 断使能位定时器0中
6、断使能位118.3 定时器工作模式n定时器0 和定时器1 完全兼容,均可设定为四 种不同的工作模式,如表8-1 所示。寄存器 TMOD 的位域TxM选择定时器的工作模式。 n两个定时器在模式0、1 和2 时独立工作;在 模式3 时具有特定功能。 12表8-1 定时器0 和定时器1 工作模式 13n1.工作模式0n当T0M(T1M)=00时定时器设定为工作模式0,此 时定时器工作于13位定时状态。n其中TH0是高8位加法计数器,TL0是低5位加法计 数器(TL0只用了低5位,高3位未用)。TL0加法 计数溢出时向TH0进位,TH0加法计数溢出时硬件 置TF0=1。n加法计数器对机器周期脉冲Tcy
7、计数,每个机器周 期TL0加1。14n定时器的定时时间n计数初始值Xn最大定时能力:15模式0的结构图如图8-4所示。图8-4 方式0结构图门控位GATE=0 定时器不受 控于外部信号;仅打 开与门,是定时器仅 有TR位控制; GATE=1 定时器受控 于外部信号,此时要 求TR=1;13位加法 计数器16p例题:生成周期为1.2 ms的等宽正方波。机器晶 振26.67MHz。使用T0以方式0工作,由P0.0输出1.2 msn机器周期:37.5ns。计数周期Tcy是机器脉冲 的2分频,因此Tcy=75ns;n定时时间0.6ms 。n以0.6 ms为周期在P1.0端交替输出高低电平。17n定时器
8、初始化程序MOV TL0, #0X00MOV TH0,#0X06MOV TMOD,#0X00SETB ET0SETB TR0n定时器中断服务程序PUSH .CPL P0_0POP T0从192开始计数,直到 超过8192即溢出,置 TF0=1,产生中断信号18n2.工作模式1nT0M(T1M)=01时定时器设定为工作模式1,此时 定时器0(定时器1)被设置为16位定时器。此时 TH0、TL0都是8位加法计数器。其他与工作方式0 相同。n定时器的定时时间n计数初始值19模式1的结构图如图8-5所示。图8-5 方式1结构图16位加法 计数器20n3.工作模式2n当T0M(T1M)=10时定时器设定
9、为工作模式2,此 时定时器0(定时器1)被设置为可自动重载的8 位定时器。qTL0为8位加法计数器,qTH0为存放该8位加法计数器初值的寄存器。 qTH0、TL0的初值都由程序预置。n在工作模式2中,定时器的定时时间由下式确定:只有T0可工 作于此模式21模式2的结构图如图8-6所示。图8-6 方式2结构图8位加法 计数器初值寄 存器22n4.工作模式3n当T0M(T1M)=11时定时器设定为工作模式3,只有定 时器0可以工作在工作模式3下。如把定时器1设置为工 作模式3,则定时器1停止工作。nTL0、TH0成为两个独立的8位加法计数器。它的工作情 况与模式0、模式1类似,差别在于定时范围为:
10、n模式3的结构图如图8-7所示。 nTL0 占用定时器0 的控制位:GATE0,TR0 和TF0nTH0占用定时器1 的控制位TR1 和TF1,TH0 溢出时 将置位TF1, 并且在ET1 置位时产生中断。23图8-7 方式3结构图24T0和T1的应用举例n例 若fOSC=26.67MHz,T1工作于方式1,产生45ms的定时 中断,TF1为其中断源标志。试编写主程序和中断服务程 序,使P1.0产生周期为90ms的方波。(忽略中断响应时 间和指令执行时间)n解:q让P1.0每45ms取反一次即可实现。定时器的单次定时时间 不可能达到45ms,如果设定16位的工作模式1,最大定时时 间也才为4.
11、9152ms。q可让定时器多次定时产生4.5ms的定时时间,如让T1工作在 方式1,单次定时时间为4.5ms,那么T1中断10次就是45ms 的时间。 25n(1)确定定时常数q假设使用fOSC的2分频作为计数源,则Tcy2/ fOSC 2/ (26.67106)75nsq由公式q可知计数初值qTH1=0x15,TL0=0xA0。 26n(2)初始化程序包括T1初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入T1。一般将初始化操作放在主程序中完成,当程序规模较大时,应编写单独的初始化程序,以利于程序的模块化设计。n(3)中断服务程序中断服务
12、程序除了完成要求的方波产生这一工作之外,还要注意将时间常数重新送入T1中,为下一次产生中断作准备。 27程序清单如下(主程序): #include sbit P1_0 = P10; int count=10;/10次T1中断为45ms void main( void ) TMOD=0x10; /T1方式1P1_0=0;TH1=0x15; /初值TL1=0xA0; IEN0=0x08; /允许T1中断IP|=0x08; IPH|=0x08; /TF1中断为高级中断TR1=1EA=1; / 总开中断while(1); /死循环, 查询 等待TF1置位,产生方波注:寄存器 所在页的选 择没有列出28
13、程序清单如下(中断服务程序片段): TF1=0;TH1=0x15; TL1=0xA0; /重填初值If (count!=0) count-;else count=10;P1_0=!P1_0;298.4 定时器T2n8.4.1 概述n定时器2 是一个16 位通用计数器,其具有 两种操作模式:16 位自动重载模式和16 位 捕获模式。n如果预分频功能被禁止,定时器2工作时, 16 位通用加法计数器以12分频的周期脉冲 计数,每个周期16位通用加法计数器加1或 减1。30n定时器2由T2MOD寄存器、T2CON存器、功能 存器TH2、TL2、RC2H、RC2L等电路构成。qTH2、TL2构成16位通
14、用计数器。qRC2H、RC2L作为16位寄存器,在自动重载模式 中RC2H、RC2L作为16位通用计数器的16位初值 寄存器q在捕捉模式中,当引脚T2EX上出现下降沿跳变 时,把TH2、TL2的当前值捕捉到RC2H、RC2L中 去。31n8.4.2 定时器T2控制寄存器n1.模式寄存器T2MODn寄存器T2MOD 用来选择定时器2 的工作模式。其 组成如图8-8所示。32启动边沿 选择位 外部启动 使能位 捕获模式/重载模式 的边沿选择位 预分频使能位 计数器 递增/递 减使能位 图8-8 T2MOD各位功能33n2.控制寄存器T2CONn寄存器T2CON 控制定时器2 的工作模式,其各位功
15、能如图8-9所示。 上溢/下溢标志位 外部事件标志位 展示T2EX引脚状态 捕获/重载模式选择位 0:重载;1:捕获 外部使能控制位 1:使能T2EX引脚控制; 0:禁止 T2EX引脚控制;启动/停止控制位 图8-9 T2CON各位功能348.4.3 定时器T2工作模式n1.自动重载模式n控制寄存器T2CON 中的 置“0” 时,定时 器2被选择为自动重载模式。n该模式下,定时器2计数至溢出时,将寄存器RC2H 、RC2L中的16 位初始值重新装入定时器的TH2、 TL2寄存器中,开始新一轮计数循环。n并置位寄存器T2CON 的TF2 位表示计数溢出,从 而向CPU 发送中断请求信号。n溢出标
16、志TF2 必须由程序清零。根据控制寄存器 T2MOD 中DCEN 控制位的设置,自动重载模式可进 一步分为两种类型。35n1)禁止递增/递减计数模式n若DCEN = 0,则递增/递减计数选择被禁止,此时定 时器只能递增计数。工作原理如图 8-10 所示。图8-10 T2禁止递增/递减计数模式27号引 脚使能/禁止引入外 部信号控制T2中断标 志位通用16定时 器寄存器重载值 寄存器预分频 使能位36n若EXEN2 = 0,置位TR2 定时器开始递增计数 ,计数至最大值FFFFH 后溢出并置位TF2, 同时将寄存器RC2 中的16 位重载值重新装入 定时器寄存器。n重载值由软件预先设置。新一轮计数循环开始 ,定时器同上一轮计数循环一样,从重载值开 始递增计数。37n若EXEN2 = 1, 置位TR2 定时器开始递增计数至最 大值FFFFH。计数溢出或输入引脚T2EX 的负/正跳变 (由寄存器T2MOD 的