1、第六章第六章 定时器及应用定时器及应用 在测控系统中,常常需要有在测控系统中,常常需要有实时时钟实时时钟和和计数器计数器,以,以实现定时控制以及对外界事件进行计数。实现定时控制以及对外界事件进行计数。MCS-51内部的内部的两个两个16位位定时器定时器/计数器就具有这两种功能,可用于定时计数器就具有这两种功能,可用于定时控制、延时、对外部事件计数和检测等场合。控制、延时、对外部事件计数和检测等场合。定时器概述定时器概述 定时器的控制定时器的控制定时器的四种模式及应用定时器的四种模式及应用定时器的结构和功能定时器的结构和功能工作寄存器和控制寄存器工作寄存器和控制寄存器模式模式1、2、3及应用及应
2、用 1 1、定时器的结构、定时器的结构这些寄存器之间是通过这些寄存器之间是通过内部总线和控制逻辑电内部总线和控制逻辑电路连接起来的。路连接起来的。6.16.1 定时器概述定时器概述6.16.1 定时器概述定时器概述89C51定时器的结构如定时器的结构如图图6-1 所示。所示。有两个有两个16位的定时器位的定时器/计数器,即计数器,即T0和和T1,它们实际,它们实际上都是上都是16位加位加1计数器。计数器。T0由两个由两个8位特殊功能寄存器位特殊功能寄存器TH0和和TL0构成;构成;T1由由TH1和和TL1构成。这些寄存器用于构成。这些寄存器用于存放定时和计数初存放定时和计数初值值。0000H
3、FFFFH 0 655356.16.1 定时器概述定时器概述 每个定时器都可由软件设置为每个定时器都可由软件设置为定时工作方式定时工作方式或或计数工计数工 作方式作方式及其他灵活多样的可控功能方式。这些功能由及其他灵活多样的可控功能方式。这些功能由 特殊功能寄存器特殊功能寄存器TMOD和和TCON所控制。所控制。TMOD 主要用于选定定时器的主要用于选定定时器的工作方式工作方式;TCON主要用于控制定时器的主要用于控制定时器的启动与停止启动与停止。6.16.1 定时器概述定时器概述 2 2、定时器的功能、定时器的功能 16位的定时器位的定时器/计数器的实质上是一个加计数器的实质上是一个加1的计
4、数器,的计数器,其控制电路受软件控制、切换。计数的次数和时间之间其控制电路受软件控制、切换。计数的次数和时间之间是相关的。是相关的。只要计数脉冲的间只要计数脉冲的间隔相等,计数值就隔相等,计数值就代表时间的流逝代表时间的流逝6.16.1 定时器概述定时器概述 定时工作方式定时工作方式 当定时器当定时器/计数器为计数器为定时工作方式定时工作方式时,时,加加1信号由振荡器信号由振荡器 的的12分频分频产生,即每过一个机器周期,计数值产生,即每过一个机器周期,计数值增增1,直,直 至至计满溢出计满溢出为止。为止。显然,定时器的定时时间与系统的振荡频率有关。由于显然,定时器的定时时间与系统的振荡频率有
5、关。由于 一个机器周期等于一个机器周期等于12个振荡周期,所以计数频率个振荡周期,所以计数频率fcount=1/12 fosc6.16.1 定时器概述定时器概述 定时工作方式定时工作方式例:晶振为例:晶振为12MHz,则计数周期为则计数周期为 T=1/(12*106)Hz*1/12 =1微秒微秒 最短的定时周期最短的定时周期当当8051采用采用12MHz晶振时,一个机器周期为晶振时,一个机器周期为1s,计数频率为计数频率为1MHz。6.16.1 定时器概述定时器概述 计数工作方式计数工作方式 当定时器当定时器/计数器为计数器为计数工作方式计数工作方式时,通过引脚时,通过引脚T0和和T1 对外部
6、信号计数,外部脉冲的对外部信号计数,外部脉冲的下降沿下降沿触发计数。触发计数。在每个机器周期的在每个机器周期的S5P2期间采样引脚。期间采样引脚。采样过程:采样过程:当输入脉冲信号产生由当输入脉冲信号产生由1至至0的下降沿时定时器的值的下降沿时定时器的值加加1。TcyTcy6.16.1 定时器概述定时器概述 计数工作方式计数工作方式 由于由于CPU检测一个由检测一个由1到到0的跳变需要的跳变需要两个机器周期两个机器周期,所以计数的最高频率为振荡频率的所以计数的最高频率为振荡频率的1/24。为了确保给定电平在变化前至少被采样一次,外部计数为了确保给定电平在变化前至少被采样一次,外部计数 脉冲的高
7、低电平均需保持脉冲的高低电平均需保持一个机器周期一个机器周期以上。以上。6.16.1 定时器概述定时器概述 2 2、定时器的功能、定时器的功能 经过分析,我们知道单片机中的定时器和计数器经过分析,我们知道单片机中的定时器和计数器是一个东西,只不过计数器用来记录外界发生的事情,是一个东西,只不过计数器用来记录外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。而定时器则是由单片机提供一个非常稳定的计数源。定时器定时器/计数器是一种可编程部件,在其开始工计数器是一种可编程部件,在其开始工作前,作前,CPU必须将一些命令(控制字)写入定时器必须将一些命令(控制字)写入定时器/计计数器。这个
8、过程称为定时器数器。这个过程称为定时器/计数器的计数器的初始化初始化。6.16.1 定时器概述定时器概述 2 2、定时器的功能、定时器的功能 当当CPU用软件给定时器设置了某种工作方式之后,用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计数溢出,才可能中断的操作时间,除非定时器计数溢出,才可能中断CPU当前操作。当前操作。每个定时器每个定时器/计数器还有计数器还有4种种工作模式。其中模式工作模式。其中模式0-2对对T0和和T1是一样的,模式是一样的,模式3对两者不同。对两者不同。6.26
9、.2 定时器的控制定时器的控制 1、工作模式寄存器、工作模式寄存器TMOD 2、控制寄存器、控制寄存器TCON 定时器共有两个控制字,由软件写入定时器共有两个控制字,由软件写入TMOD和和TCON两个两个8位寄存器,用来设置位寄存器,用来设置T0或或T1的的操作模式操作模式和和控制功能控制功能。当。当89C51系统复位时,两个寄存器所有系统复位时,两个寄存器所有位都被位都被清零清零。6.26.2 定时器的控制定时器的控制 1、工作模式寄存器、工作模式寄存器TMODvTMOD用于控制用于控制T0和和T1的的工作模式工作模式。vTMOD不能位寻址,只能用不能位寻址,只能用字节字节设置定时器的工作设
10、置定时器的工作模式,低半字节设置模式,低半字节设置T0,高半字节设置高半字节设置T1。v89C51系统复位时,系统复位时,TMOD的所有位被的所有位被清清0。89H图图6-3 工作模式寄存器工作模式寄存器TMOD的位定义的位定义6.26.2 定时器定时器的控制的控制 1、工作模式寄存器、工作模式寄存器TMODGATE C/T M1 M0 GATEM1C/TM0定时器定时器T1定时器定时器T0TMOD(89H)bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0TMOD各位的功能各位的功能 M1和和M0操作模式控制位。操作模式控制位。两位可形成四种编码,对应于四种模式。
11、见两位可形成四种编码,对应于四种模式。见表表6-1。TMOD各位的功能:各位的功能:6.26.2 定时器定时器的控制的控制 1、工作模式寄存器、工作模式寄存器TMODGATE C/T M1 M0 GATEM1C/TM0定时器定时器T1定时器定时器T0 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0表表6-1 M1,M0控制的四种工作模式控制的四种工作模式6.26.2 定时器定时器的控制的控制TMOD各位的功能各位的功能 C/T计数器计数器/定时器方式选择位。定时器方式选择位。6.26.2 定时器定时器的控制的控制 1、工作模式寄存器、工作模式寄存器TMODGAT
12、E C/T M1 M0 GATEM1C/TM0 C/T=0,设置为定时方式。定时器计数,设置为定时方式。定时器计数89C51片内片内 脉冲,即对机器周期计数。脉冲,即对机器周期计数。C/T=1,设置为计数方式。计数器的输入来自,设置为计数方式。计数器的输入来自T0 (P3.4)或或T1(P3.5)端的外部脉冲端的外部脉冲。bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0TMOD各位的功能各位的功能 GATE门控位。门控位。6.26.2 定时器定时器的控制的控制 1、工作模式寄存器、工作模式寄存器TMODGATE C/T M1 M0 GATEM1C/TM0 GATE
13、=0,只要用软件使只要用软件使TR0(或(或TR1)置)置1就可启就可启动定时器,而不管动定时器,而不管INT0(或(或INT1)的电平的高低;)的电平的高低;GATE=1,只有只有INT0(或(或INT1)引脚为)引脚为高电平高电平且由且由软件使软件使TR0(或(或TR1)置)置1时,才能启动定时器工作。时,才能启动定时器工作。bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit06.26.2 定时器定时器的控制的控制6.26.2 定时器的控制定时器的控制 2、控制寄存器、控制寄存器TCONvTCON除可除可字节寻址字节寻址外,各位还可外,各位还可位寻址位寻址。v89
14、C51系统复位时,系统复位时,TCON的所有位被的所有位被清清0。vTCON各位的定义格式如各位的定义格式如图图所示:所示:TF1 TR1 TF0 TR0 IE1IE0IT1IT0TCON(88H)8FH 8EH 8DH 8CH 8BH 8AH 89H 88HvTCON各位的功能。各位的功能。88HTMOD各位的功能各位的功能6.26.2 定时器定时器的控制的控制TF1 TR1 TF0 TR0 IE1IE0IT1IT0TCON(88H)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TF1(TCON.7)T1溢出标志位。溢出标志位。当当T1溢出溢出时,由硬件自动使中断触发器时,
15、由硬件自动使中断触发器TF1置置1,并并CPU申请中断。申请中断。当当CPU响应中断响应中断进入中断服务程序后,进入中断服务程序后,TF1由被硬由被硬 件件自动清自动清0。TF1也可以用软件清也可以用软件清0。TF0(TCON.5)T0溢出标志位。溢出标志位。其功能和操作情况同其功能和操作情况同TF1。TMOD各位的功能各位的功能6.26.2 定时器定时器的控制的控制TF1 TR1 TF0 TR0 IE1IE0IT1IT0TCON(88H)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TR1(TCON.6)T1运行控制位。运行控制位。可通过软件可通过软件置置1(TR1=1)或
16、)或清清0(TR1=0)来)来启动启动 或或关闭关闭 T1。在程序中用指令在程序中用指令“SETB TR1”使使TR1位位置置1,定时,定时器器 T1便开始计数。便开始计数。TR0(TCON.4)T0运行控制位。运行控制位。其功能和操作情况同其功能和操作情况同TR1。TMOD各位的功能各位的功能6.26.2 定时器定时器的控制的控制TF1 TR1 TF0 TR0 IE1IE0IT1IT0TCON(88H)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H IE1,IT1,IE0,IT0(TCON.3TCON.0)外部中断外部中断INT1,INT0请求及请求方式控制位。请求及请求方式
17、控制位。前一章已经讲过。前一章已经讲过。6.26.2 定时器定时器的控制的控制6.36.3 定时器定时器的的4 4种模式及应用种模式及应用 由上节可知,通过对由上节可知,通过对TMOD中的中的M1、M0的设置,的设置,可以选择四种工作方式。也就是每个定时器可构成可以选择四种工作方式。也就是每个定时器可构成4种种电路结构模式。电路结构模式。在模式在模式0、1和和2,T0和和T1的工作方式相同,在模的工作方式相同,在模式式3,两个定时器的方式不同。下面以,两个定时器的方式不同。下面以T0为例,分述各为例,分述各种工作方式的特点和用法。种工作方式的特点和用法。1、模式、模式06.36.3 定时器定时
18、器的的4 4种模式及应用种模式及应用 模式模式0为为TL0(5位)、位)、TH0(8位)方式,模式位)方式,模式1为为TL1(8位)、位)、TH1(8位)方式,其余完全相同。位)方式,其余完全相同。13位计数位计数 2、模式、模式1及应用及应用6.36.3 定时器定时器的的4 4种模式及应用种模式及应用(1)模式)模式 1 的逻辑电路结构的逻辑电路结构图图6-7 T0(或(或T1)模式)模式1结构结构16位计数器位计数器 2、模式、模式1及应用及应用6.36.3 定时器定时器的的4 4种模式及应用种模式及应用(1)模式)模式 1 的逻辑电路结构的逻辑电路结构v该模式对应的是一个该模式对应的是一
19、个16位的定时器位的定时器/计数器计数器。v用于定时工作方式时,定时时间为:用于定时工作方式时,定时时间为:t=(216T0初值初值)振荡周期振荡周期12v用于计数工作方式时,计数长度最大为:用于计数工作方式时,计数长度最大为:216=65536(个外部脉冲)个外部脉冲)例例6-1:用定时器:用定时器T1产生一个产生一个50Hz的方波,由的方波,由 P1.1 输出。使用程序查询方式,输出。使用程序查询方式,fosc=12MHz。6.36.3 定时器定时器的的4 4种模式及应用种模式及应用(2)模式)模式 1 应用举例(例应用举例(例6-1)方波周期方波周期T=1/50=0.02s=20ms 用
20、用T1定时定时10ms 计数初值计数初值X为:为:X=216 =65 53610 000=55536=D8F0H解:解:10ms 12 12MHz源程序源程序清单:清单:MOV TMOD,#10H ;设置设置T1T1为模式为模式1 1 SETB TR1 ;启动定时;启动定时LOOP:MOV TH1,#0D8H ;送初值送初值 MOV TL1,#0F0H JNB TF1,$;查询定时时间到否查询定时时间到否 CLR TF1 ;产生溢出,清标志位产生溢出,清标志位 CPL P1.1 ;P1.1P1.1取反输出取反输出 SJMP LOOP ;重复循环重复循环6.36.3 定时器定时器的的4 4种模式
21、及应用种模式及应用(2)模式)模式 1 应用举例(例应用举例(例6-4)3、模式、模式2及应用及应用6.36.3 定时器定时器的的4 4种模式及应用种模式及应用(1)模式)模式 2 的逻辑电路结构的逻辑电路结构图图6-7 T0(或(或T1)模式)模式2结构结构8位计数器位计数器 3、模式、模式2及应用及应用6.36.3 定时器定时器的的4 4种模式及应用种模式及应用(1)模式)模式2的逻辑电路结构的逻辑电路结构vTL0计数溢出时,不仅使溢出中断标志位计数溢出时,不仅使溢出中断标志位TF0置置1,而且还自动把而且还自动把TH0中的内容中的内容重新装载到重新装载到TL0中。中。v用用TL0用作用作
22、8位计数器,位计数器,TH0用以保存初值。用以保存初值。3、模式、模式2及应用及应用6.36.3 定时器定时器的的4 4种模式及应用种模式及应用(2)模式)模式2的工的工作特点作特点v该模式把该模式把TL0(TL1)配置成一个可以自动重装载的配置成一个可以自动重装载的8位位定时器定时器/计数器;计数器;v在程序初始化时,在程序初始化时,TL0和和TH0由软件赋予相同的初值由软件赋予相同的初值;v用于定时工作方式时,定时时间为:用于定时工作方式时,定时时间为:t=(28TH0初值初值)振荡周期振荡周期12 3、模式、模式2及应用及应用6.36.3 定时器定时器的的4 4种模式及应用种模式及应用(
23、2)模式)模式2的工的工作特点作特点v用于计数工作方式时,计数长度最大为:用于计数工作方式时,计数长度最大为:28=256(个(个外部脉冲);外部脉冲);v该模式可省去软件中重装常数的语句,并可产生相该模式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口波特率发生器。当精确的定时时间,适合于作串行口波特率发生器。v例例6-2:利用定时器:利用定时器T1的模式的模式2对外部信号计数。对外部信号计数。要求设计满要求设计满100次,将次,将 P1.0端取反。端取反。6.36.3 定时器定时器的的4 4种模式及应用种模式及应用解:解:(1)选择模式)选择模式v外部信号由外部信号由
24、T1(P3.5)引脚输入,每发生一次负跳引脚输入,每发生一次负跳变计数器加变计数器加1,每输入,每输入100个脉冲,计数器发生溢出个脉冲,计数器发生溢出中断,中断服务程序将中断,中断服务程序将P1.0取反一次。取反一次。6.36.3 定时器定时器的的4 4种模式及应用种模式及应用(1)选择模式)选择模式vT1计数工作方式模式计数工作方式模式2的模式字为(的模式字为(TMOD)=60H。T0不用时,不用时,TMOD的低的低4位可任取,但不能进入模式位可任取,但不能进入模式 3,一般取,一般取0。(2)计算)计算T1的计数初值的计数初值 X=28 100=156D=9CH 因此:因此:TL1的初值
25、为的初值为9CH,重装初值寄存器重装初值寄存器TH1=9CH。(3)程序清单程序清单MAIN:MOV TMOD,#60H ;设置设置T1T1为模式为模式2,2,外部计数方式外部计数方式 MOV TL1,#9CH ;T1T1计数器初值计数器初值 MOV TH1,#9CH MOV IE,#88H ;定时器开中断定时器开中断 SETB TR1 ;启动;启动T1T1计数计数HERE:SJMP HERE ;等待中断;等待中断 ORG 001BH ;中断服务程序入口中断服务程序入口 CPL P1.0 RETI6.36.3 定时器定时器的的4 4种模式及应用种模式及应用v 例例6-3:已知:已知89C51单
26、片机的单片机的fOSC=6MHz,请利用,请利用 T0和和P1.0输出矩形波。矩形波高电平宽为输出矩形波。矩形波高电平宽为 50s,低电平为,低电平为300 s。解:解:(1)输出及模式的确定)输出及模式的确定6.36.3 定时器定时器的的4 4种模式及应用种模式及应用50s300sP1.0T0采用定时工作方式模式采用定时工作方式模式2,模式字为,模式字为(TMOD)=02H(2)设置定时器初值)设置定时器初值X6.36.3 定时器定时器的的4 4种模式及应用种模式及应用v T0采用模式采用模式2作作50s定时的初值:定时的初值:(28X)12/(6 106)=5010-6 s X=256 5
27、010-6 6 106/12=231=E7Hv 作作300s定时的初值:定时的初值:(28X)12/(6 106)=30010-6 s X=256 30010-6 6 106/12=106=6AH(3)主程序清单)主程序清单 MOV TMOD,#02H ;上电,转向主上电,转向主程序程序L2:CLR P1.0 ;P1.0P1.0输出低电平输出低电平 CLR TR0 ;关闭;关闭T0T0 MOV TH0,#6AH ;置入定时;置入定时300300s s初值初值 MOV TL0,#6AH SETB TR0 ;启动启动T0T06.36.3 定时器定时器的的4 4种模式及应用种模式及应用LOOP1:J
28、BC TF0,L1 ;查询查询300300s s时间到?到转时间到?到转L1L1 SJMP LOOP1 ;时间未到,转时间未到,转LOOP1,LOOP1,继续查询继续查询 L1:SETB P1.0 ;P1.0P1.0输出高电平输出高电平 CLR TR0 ;关闭;关闭T0T0 MOV TH0,#0E7H ;置入定时;置入定时5050s s初值初值 MOV TL0,#0E7H SETB TR0 ;启动启动T0T06.36.3 定时器定时器的的4 4种模式及应用种模式及应用LOOP2:JBC TF0,L2 ;查询查询5050s s时间到?到转时间到?到转L2L2 SJMP LOOP2 ;时间未到,转
29、时间未到,转LOOP2,LOOP2,继续查询继续查询 v 例例6-4:已知:已知89C51单片机的单片机的fOSC=12MHz,采用,采用T1 定时模式定时模式2。编写由。编写由P1.0和和P1.1引脚分别引脚分别 输出周期为输出周期为2ms和和500s的方波。的方波。解:解:(1)输出及模式的确定)输出及模式的确定6.36.3 定时器定时器的的4 4种模式及应用种模式及应用500s2msP1.1T1采用定时工作方式模式采用定时工作方式模式2,模式字为,模式字为(TMOD)=20HP1.0(2)设置定时器初值)设置定时器初值X6.36.3 定时器定时器的的4 4种模式及应用种模式及应用v T1
30、采用模式采用模式2作作250s定时的初值:定时的初值:(28X)12/(12 106)=25010-6 s X=256 25010-612 106/12=6=06H T1的低的低8位为位为06H,高,高8位为位为06H(3)主程序清单)主程序清单 MOV R2,#04H ;R2R2为计数器,计为计数器,计1ms1ms,初值为,初值为4 4CLR P1.0 ;P1.0,P1.1P1.0,P1.1输出低电平输出低电平 CLR P1.1 MOV TMOD,#20H ;定时器;定时器T1T1工作在模式工作在模式2 2L2:MOV TH1,#06H ;置入定时;置入定时250250s s初值初值 MOV
31、 TL1,#06H SETB TR1 ;启动启动T1T16.36.3 定时器定时器的的4 4种模式及应用种模式及应用LOOP:JBC TF1,L1 ;查询到;查询到250250s s?SJMP LOOP L1:CPL P1.1 ;P1.1P1.1取反,输出取反,输出 500500s s方波方波 CLR TR1 ;关闭;关闭T1T1 DJNZ R2,L2 ;查询到;查询到1ms1ms?未到转?未到转L2L2 CPL P1.0 ;到;到1ms1ms,P1.1P1.1取反,输出取反,输出2ms2ms方波方波 MOV R2,#04H ;重置计数器初值;重置计数器初值 LJMP L26.36.3 定时器定时器的的4 4种模式及应用种模式及应用