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