1、第六章第六章 MCS-51定时器定时器/计数器计数器1216.1 6.1 定时器定时器/计数器结构及工作方式计数器结构及工作方式3学习内容学习内容1结构结构工作方式工作方式2寄存器寄存器21、MCS-51单片机内有单片机内有定时器定时器/计数计数器器T0、T1,其逻辑结构如下图所示,其逻辑结构如下图所示:图6-1 MCS-51定时器/计数器逻辑结构图一一、定时器、定时器/计数器结构计数器结构:是:是计数器,计数器,分别由两个八位专用寄存器分别由两个八位专用寄存器和和组成。组成。:是:是计数器,计数器,分别由两个八位专用寄存器分别由两个八位专用寄存器和和组成。组成。用来设置定用来设置定时器的时器
2、的用来控制定时器的用来控制定时器的。32、定时器、定时器/计数器功能计数器功能v定时器定时器 是通过内部计数器的计数来实现的,是通过内部计数器的计数来实现的,来来自单片机的自单片机的,其频率是振荡(晶体)频率的,其频率是振荡(晶体)频率的1/12,即,即产生一个计数脉冲,产生一个计数脉冲,直至计满溢出。,直至计满溢出。4v计数器计数器 是对是对外外进行计数。计数器对来自输入引脚进行计数。计数器对来自输入引脚P3.4和和P3.5的外部信号计数,外部脉冲的的外部信号计数,外部脉冲的(下降沿)(下降沿)。检测一个由检测一个由1到到0的负跳变需要的负跳变需要两个机器周期两个机器周期。所。所以最高计数频
3、率为以最高计数频率为晶体频率的晶体频率的1/24。5问题的提出 晶振频率为晶振频率为12MHz时,定时,定时器和计数器的最高计数时器和计数器的最高计数频率各是多少?频率各是多少?6 回答:晶振频率为晶振频率为12MHz时,定时时,定时器和计数器的最高计数频率器和计数器的最高计数频率各为各为1MHz、500KHz.7分三类:分三类:定时器定时器/计数器方式寄存器:计数器方式寄存器:TMOD定时器定时器/计数器控制寄存器:计数器控制寄存器:TCON定时器初值寄存器:定时器初值寄存器:TH0 TL0 TH1 TL1二、定时器二、定时器/计数器寄存器计数器寄存器81、定时器、定时器/计数器方式寄存器计
4、数器方式寄存器TMOD(89H)TMODGATEC/TM1M0GATEC/TM0M1D7D6D5D4D3D1D2D0T1方式控制T0方式控制图6-2 TMOD 寄存器各位定义GATE:门控位,用来控制定时器门控位,用来控制定时器/计数器的启动是计数器的启动是否受外部中断请求信号的影响。否受外部中断请求信号的影响。GATE=0,不受影响,不受影响,仅由控制位仅由控制位TRx控制;控制;GATE=1,受,受TRx和外部中断请求信号共同控制。和外部中断请求信号共同控制。9C/T:定时或计数功能选择位。定时或计数功能选择位。C/T=1,为,为计数器计数器方式;方式;C/T=0,为,为定时器定时器方式。
5、方式。M1M0:定时器四种工作方式选择定时器四种工作方式选择:00:方式方式0:13位位定时器定时器/计数器计数器01:方式方式1:16位位定时器定时器/计数器计数器10:方式方式2:自动重装初值的自动重装初值的8位位定时器定时器/计数器计数器11:方式方式3:T0分成两个分成两个8位位定时器定时器/计数器计数器10例例6-1:某一系统使某一系统使T1作为定时器,采用方式作为定时器,采用方式2,使,使T0作为计数器采用方式作为计数器采用方式1,T0、T1的门控位均为的门控位均为0,请设,请设置置TMOD的值。的值。0 0 1 0 0 1 0 1 即:即:TMOD=25H.TMODGATEC/T
6、M1M0GATEC/TM0M1D7D6D5D4D3D1D2D0T1方式控制T0方式控制 112、定时器、定时器/计数器控制寄存器计数器控制寄存器TCON(88H,可位寻址,可位寻址)TRx:Tx的的运行控制位运行控制位。TRx=1,启动启动定时器定时器/计数器计数器TRx=0,关闭关闭定时器定时器/计数器计数器 x=0、1123、定时器初值寄存器、定时器初值寄存器 TH0 TL0 TH1 TL1用于存放计数初值,具有自动加用于存放计数初值,具有自动加1功能,加满后溢功能,加满后溢出,它们的字节地址是出,它们的字节地址是:根据定时器根据定时器/计数器工作方式,计数长度可分别选计数器工作方式,计数
7、长度可分别选择择:8位,位,13位,位,16位。位。13MCS-51的定时器的定时器/计数器共有四种工作方式,计数器共有四种工作方式,其中:其中:T0有方式有方式0、1、2、3四种;四种;T1有方式有方式0、1、2三种。三种。三、工作方式三、工作方式141、工作方式、工作方式0(以(以T0为例)为例)13位定时器位定时器/计数器计数器TMOD00M0M1C/TGATEINT0(P3.2)T0(P3.4)C/T=1C/T=0振荡器 12控制TL0(低5位)TH0TCONTF0TR 0中断图 6-4 方式 0(13位计数器)(高8位)S1S2TL0的高的高3位位没有用没有用15C/T=1,S1接下
8、面,接下面,T0作计数器,对作计数器,对P3.4引脚输入引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器的外部脉冲计数,当脉冲发生负跳变时,计数器加加1,计数值公式为:,计数值公式为:N=213 x=8192 x 其中:其中:N为计数值,为计数值,x是是THx、TLx的初值。的初值。x=时,时,N最小值最小值=;x=时,时,N最大值最大值=。则则N的范围:的范围:。16C/T=0时,时,S1接上面,接上面,T0作定时器,对机器周期作定时器,对机器周期脉冲脉冲Tcy计数。计数。v 求定时时间由下式确定:求定时时间由下式确定:t=NTcy=(213 x)Tcy=(8192 x)Tcy 其中:其中
9、:t为定时时间。为定时时间。v 求计数初值计算公式:求计数初值计算公式:x=213 t/Tcy=8192 t/Tcy 172、工作方式、工作方式1(以(以T0为例)为例)16位定时器位定时器/计数器计数器TMOD10M0M1C/TGATEINT0(P3.2)T0(P3.4)C/T=1C/T=0振荡器12控制TL0(8位)TH0(8位)TCONTF0TR0中断图6-5 方式1(16位计数器)18C/T=1,S1接下面,接下面,T0作计数器,对作计数器,对P3.4引脚输入引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加的外部脉冲计数,当脉冲发生负跳变时,计数器加1,计数值公式为:,计数值公式为
10、:N=216 x=65536 x 其中:其中:N为计数值,为计数值,x是是THx、TLx的初值。的初值。x=时,时,N最小值最小值=;x=时,时,N最大值最大值=;则则N的范围:的范围:。19C/T=0时,时,S1接上面,接上面,T0作定时器,对机器周期作定时器,对机器周期脉冲脉冲Tcy计数。计数。v 求定时时间由下式确定:求定时时间由下式确定:t=NTcy=(216 x)Tcy=(65536 x)Tcy 其中:其中:t为定时时间。为定时时间。v 求计数初值计算公式:求计数初值计算公式:x=216 t/Tcy=65536 t/Tcy 203、工作方式、工作方式2(以(以T0为例)为例)8位定时
11、器位定时器/计数器计数器TL0作为作为8位加法计数器,位加法计数器,TH0作为初值寄存器作为初值寄存器用。用。TL0加法计数器溢出时置加法计数器溢出时置TF0=1,而且发出,而且发出重装载信号,使三态门打开,将重装载信号,使三态门打开,将TH0中的初值自中的初值自动送入动送入TL0。21C/T=1,S1接下面,接下面,T0作计数器,对作计数器,对P3.4引脚输入的引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加外部脉冲计数,当脉冲发生负跳变时,计数器加1,计数值公式为:计数值公式为:N=28 x=256 x 其中:其中:N为计数值,为计数值,x是是THx、TLx的初值。的初值。x=时,时,
12、N最小值最小值=;x=时,时,N最大值最大值=;则则N的范围:的范围:。22C/T=0时,时,S1接上面,接上面,T0作定时器,对机器周期作定时器,对机器周期脉冲脉冲Tcy计数。计数。v 求定时时间由下式确定:求定时时间由下式确定:t=NTcy=(28 x)Tcy=(256 x)Tcy 其中:其中:t为定时时间。为定时时间。v 求计数初值计算公式:求计数初值计算公式:x=28 t/Tcy=256 t/Tcy 23工作方式工作方式0:x=213 t/Tcy=213 500us/2us =8192 250=7942=1F06H =1111100000110B 则则TL0=00000110B=06H
13、,TH0=11111000B=0F8H例例6-2:已知晶振已知晶振6MHz,要求定时,要求定时0.5ms,试分别求,试分别求出出T0工作于方式工作于方式0、方式、方式1、方式、方式2时的定时初值。时的定时初值。解:解:机器周期机器周期Tcy=12/fosc=12/6MHz=2us;定时定时t=0.5ms=500us.24工作方式工作方式1:x=216 t/Tcy=216 500us/2us =65536 250=65286=FF06H 则则TL0=06H,TH0=0FFH工作方式工作方式2:x=28 t/Tcy=28 500us/2us=256 250=6=6H 则则TL0=06H TH0=0
14、6H(重装初值寄存器,其值不变)(重装初值寄存器,其值不变)256 6.2 2 定时器应用举例定时器应用举例学习内容学习内容1应用步骤应用步骤2应用举例应用举例261、T0、T1的选择使用;的选择使用;2、合理选择工作方式、合理选择工作方式TMOD;3、计算初值、计算初值;x=2n t/Tcy 其中,其中,n与工作方式有关,与工作方式有关,方式方式0,n=13;方式方式1,n=16;方式方式2、3时,时,n=8。一、定时器应用步骤一、定时器应用步骤274、编制应用程序:、编制应用程序:定时器定时器/计数器的初始化:计数器的初始化:写写TMOD;写入定时初值;写入定时初值;设置中断系统的设置中断
15、系统的IP、IE;启动定时器运行(启动定时器运行(TRx)。)。正确编制定时器正确编制定时器/计数器中断服务程序。计数器中断服务程序。一、定时器应用步骤一、定时器应用步骤28例例6-3:设单片机晶振频率设单片机晶振频率fosc=12MHz,使用,使用T0以方以方式式0产生周期为产生周期为1ms的方波,并由的方波,并由P1.0输出。以中断输出。以中断方式完成编程。方式完成编程。解:解:T1不用,有关位设置为不用,有关位设置为0;T0的的GATE=0,C/T=0,M1M000(方式(方式0)。)。则则TMOD初始化设置为初始化设置为00000000B,即,即00H。二、定时器编程举例二、定时器编程
16、举例292、计算初值、计算初值 产生产生1ms的方波,只需在的方波,只需在P1.0端以端以0.5ms为周期交为周期交替输出高低电平即可,因此定时时间为替输出高低电平即可,因此定时时间为0.5ms。Tcy=12/fosc=12/12MHz=1us x=213t/Tcy=8192-500us/1us=8192-500=7692 =1E0CH=1 1110 0000 1100B,TH0=11110000B=0F0H;TL0=00001100B=0CH3、启动和中断、启动和中断 定时器定时器T0的启动由的启动由TR0控制,即控制,即TR0=1启动。启动。定时器定时器T0的中断允许由的中断允许由ET0和
17、和EA控制,控制,即即ET0=1、EA=1。304、程序设计、程序设计 ORG 0000H LJMP MAIN ORG 000BH LJMP DS0 ORG 0100HMAIN:MOV SP,#30H MOV TL0,#0CH MOV TH0,#0F0H MOV TMOD,#00H SETB ET0 SETB EA SETB TR0 SJMP$DS0:MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI31练习题:练习题:设单片机晶振频率设单片机晶振频率fosc=6MHz,使用,使用T1以方以方式式2产生周期为产生周期为1ms的方波,并由的方波,并由P1.0输出。以
18、中断输出。以中断方式完成。方式完成。32一、填空题一、填空题1、MCS-51单片机的单片机的51子系列含有子系列含有 个个 位的位的 法定时法定时器。器。2、定时器、定时器T0有有 种工作模式;定时器种工作模式;定时器T1有有 种工作模式。种工作模式。3、欲对、欲对300个外部事件计数,可以选用定时个外部事件计数,可以选用定时/计数器计数器T1的模的模式式 或模式或模式 。4、当定时器、当定时器T0工作在方式工作在方式 时,要占定时器时,要占定时器T1的的TR1和和TF1两个控制位。两个控制位。5、若系统晶振频率为、若系统晶振频率为12MHz,则,则T0工作于定时和计数方式工作于定时和计数方式
19、时最高(计数)信号频率分别为时最高(计数)信号频率分别为 kHz和和 kHz。6、TMOD中的中的GATE=1时,表示由时,表示由 个信号控制定时器的个信号控制定时器的启停。启停。习题课习题课33二、简答题二、简答题1、单片机系统中的定时和计数功能有何区别?分、单片机系统中的定时和计数功能有何区别?分别适用于什么场合?简述其工作原理。别适用于什么场合?简述其工作原理。2、MCS-51单片机中设有几个定时器单片机中设有几个定时器/计数器?它计数器?它们分别有几种工作方式?这些工作方式各有哪些特们分别有几种工作方式?这些工作方式各有哪些特点?点?3、MCS-51单片机晶振频率为单片机晶振频率为6M
20、Hz时,分别写出时,分别写出T1处于不同工作方式时,最大定时时间是多少?处于不同工作方式时,最大定时时间是多少?34三、计算题三、计算题1、MCS-51单片机的时钟晶振频率为单片机的时钟晶振频率为6MHz,若要,若要求定时为求定时为0.2ms和和20ms,定时器,定时器0工作方式为工作方式为0,方式方式1和方式和方式2,其定时器初值各为多少?,其定时器初值各为多少?2、单片机的晶振为、单片机的晶振为6MHz,设计一个,设计一个100ms的延时的延时程序,已知用定时器程序,已知用定时器T0并工作方式并工作方式1,使用中断,使用中断和查询两种方式。和查询两种方式。3、设、设MCS-51单片机的晶振
21、频率为单片机的晶振频率为6MHz,若由,若由P1.1引脚输出引脚输出1000Hz方波,试编写其应用程序,使用方波,试编写其应用程序,使用中断方式。中断方式。35一、填空题一、填空题1、MCS-51单片机的单片机的51子系列含有子系列含有 2 个个 16 位的位的 加加 法定法定时器。时器。2、定时器、定时器T0有有 4 种工作模式;定时器种工作模式;定时器T1有有 3 种工作模式。种工作模式。3、欲对、欲对300个外部事件计数,可以选用定时个外部事件计数,可以选用定时/计数器计数器T1的模的模式式 0 或模式或模式 1 。4、当定时器、当定时器T0工作在方式工作在方式 3 时,要占定时器时,要
22、占定时器T1的的TR1和和TF1两个控制位。两个控制位。5、若系统晶振频率为、若系统晶振频率为12MHz,则,则T0工作于定时和计数方式工作于定时和计数方式时最高(计数)信号频率分别为时最高(计数)信号频率分别为 1000 kHz和和 500 kHz。6、TMOD中的中的GATE=1时,表示由时,表示由 2 个信号控制定时器的个信号控制定时器的启停。启停。答答 案案36二、简答题二、简答题1、单片机系统中的定时和计数功能有何区别?分别适用于、单片机系统中的定时和计数功能有何区别?分别适用于什么场合?简述其工作原理。什么场合?简述其工作原理。答:答:定时功能是对定时功能是对片内机器周期计数片内机
23、器周期计数,从计数开始到计满,从计数开始到计满溢出为止,可以由溢出为止,可以由计数值计数值机器周期值机器周期值来得到一个准确的来得到一个准确的时间值;而计数功能则是对单片机引脚上的时间值;而计数功能则是对单片机引脚上的外来随机脉冲外来随机脉冲进行计数进行计数,一般情况下难以折算为精确时间。,一般情况下难以折算为精确时间。定时功能适用于需要定时功能适用于需要准确计量一段时间的场合准确计量一段时间的场合;而计;而计数功能数功能适用于对外部事件的计数适用于对外部事件的计数。在单片机内,定时和计数的实现都是借助一个加在单片机内,定时和计数的实现都是借助一个加1计数计数器,工作原理基本一样,只是定时方式
24、下计数脉冲为器,工作原理基本一样,只是定时方式下计数脉冲为fose/12,计数方式下的计数脉冲由计数方式下的计数脉冲由单片机外引脚(单片机外引脚(T0或或T1)来输入)来输入。372、MCS-51单片机中设有几个定时器单片机中设有几个定时器/计数器?它们分别有几种工作方式?这计数器?它们分别有几种工作方式?这些工作方式各有哪些特点?些工作方式各有哪些特点?答:答:MCS-51单片机内部中有两个单片机内部中有两个16位可编程的定时器位可编程的定时器/计数器。定时器计数器。定时器/计数计数器有四种工作方式:方式器有四种工作方式:方式0,方式,方式1,方式,方式2,方式,方式3。其中,方式。其中,方
25、式3只适用只适用于于T0。以。以T0为例:为例:方式方式0,16位寄存器只用了位寄存器只用了13位,位,TL0的高三位未用的高三位未用。由由TH0的的8位和位和TL0的低的低5位组成一个位组成一个13位加法计数器;位加法计数器;方式方式1,和方式,和方式0的工作相同,唯一的差别是的工作相同,唯一的差别是TH0和和TL0组成一个组成一个16位加法位加法计数器;计数器;方式方式2,把,把TL0配置成一个可以配置成一个可以自动重装初值的自动重装初值的8位计数器位计数器,TL0作为作为8位加位加法计数器,法计数器,TH0作为初值寄存器作为初值寄存器。TH0由软件预置值。当由软件预置值。当TL0产生溢出
26、时,产生溢出时,一方面使溢出标志一方面使溢出标志TF0置置1,同时把,同时把TH0中的中的8位数据重新装入位数据重新装入TL0中;中;方式方式3,将使,将使TL0和和TH0成为两个相互独立的成为两个相互独立的8位计数器位计数器,TL0利用利用T0本身本身的一些控制,它的操作与方式的一些控制,它的操作与方式0和方式和方式1类似。而类似。而TH0被规定为只用作定时被规定为只用作定时器功能,对机器周期计数,并借用了器功能,对机器周期计数,并借用了T1的控制位的控制位TR1和和TF1。在这种情况。在这种情况下下TH0控制了控制了T1的中断。这时的中断。这时T1还可以设置为方式还可以设置为方式02,用于
27、任何不需,用于任何不需要中断控制的场合,用作串行口的波特率发生器。要中断控制的场合,用作串行口的波特率发生器。38三、计算题三、计算题1、MCS-51单片机的时钟晶振频率为单片机的时钟晶振频率为6MHz,若要求定时为,若要求定时为0.2ms和和20ms,定时器,定时器0工作方式为工作方式为0,方式,方式1和方式和方式2,其定时器初值,其定时器初值各为多少?各为多少?答:答:已知时钟晶振频率为已知时钟晶振频率为6MHz,Tcy=12/fosc=12/6MHz=2us3、MCS-51单片机晶振频率为单片机晶振频率为6MHz时,分别写出时,分别写出T1处于不同处于不同工作方式时,最大定时时间是多少?
28、工作方式时,最大定时时间是多少?答:答:已知时钟晶振频率为已知时钟晶振频率为6MHz,则,则Tcy=12/fosc=12/6MHz=2us。定时时间:定时时间:t=(2nx)Tcy,(1)方式)方式0时:时:x=0,tmax=(2130)Tcy=81922us=16.384ms(2)方式)方式1时:时:x=0,tmax=(2160)Tcy=655362us=131.072ms(3)方式)方式2时:时:x=0,tmax=(280)Tcy=2562us=512us39(1)方式)方式0时:设时间常数为时:设时间常数为x,x=213t/Tcy=8192-t/2us 定时为定时为0.2ms,有,有x=
29、8192-200us/2us=8092=1F9CH =1111110011100B,则则TH0=11111100B=0FCH,TL0=00011100B=1CH;定时为定时为20ms,有,有x=213t/Tcy=8192-20000us/2us=1808,无法由定时器直接产生。无法由定时器直接产生。(2)方式)方式1时:时:x=216t/Tcy=65536-t/2us 定时为定时为0.2ms,有,有x=65536-200us/2us=65436=0FF9CH 则则TH0=0FFH,TL0=9CH;定时为定时为20ms,有,有x=65536-20000us/2us=55536=0D8F0H,TH
30、0=0D8H,TL0=0F0H。402、单片机的晶振为、单片机的晶振为6MHz,设计一个,设计一个100ms的延时程序,已知的延时程序,已知用定时器用定时器T0并工作方式并工作方式1,使用查询方式。,使用查询方式。答:答:机器周期机器周期Tcy=12/fosc=12/6MHz=2us。初值初值 x=216t/Tcy=65536-100000us/2us=15536=3CB0H。故定时器故定时器T0的初值为的初值为TH0=3CH,TL0=0B0H。(3)方式)方式2时:时:x=28t/Tcy=256-t/2us 定时为定时为0.2ms,有,有x=256-200us/2us=156=9CH,则,则
31、TH0=9CH,TL0=9CH;定时为定时为20ms,无法由定时器直接产生。无法由定时器直接产生。41查询程序如下:查询程序如下:MOV TMOD,#01H ;设置定时器设置定时器T0为工作方式为工作方式1 MOV TH0,#3CH ;给定时器给定时器T0置初值置初值 MOV TL0,#0B0H MOV IE,#00H ;禁止中断禁止中断 SETB TR0 ;启动定时器启动定时器T0HERE:JNB TF0,HERE ;判断计数溢出标志位,是判断计数溢出标志位,是“1”,CLR TF0 ;计数结束计数结束 CLR TR0423、设、设MCS-51单片机的晶振频率为单片机的晶振频率为6MHz,若
32、由,若由P1.1引脚输引脚输出出1000Hz方波,试编写其应用程序,使用中断方式。方波,试编写其应用程序,使用中断方式。答:答:因为要输出因为要输出1000Hz方波,其周期为方波,其周期为1ms,故定时时间是,故定时时间是0.5ms,可使用定时,可使用定时/计数器计数器T0或或T1的工作方式的工作方式2,选,选T0。机器周期机器周期 Tcy=12/fosc=12/6MHz=2us。初值初值 x=28t/Tcy=256-500us/2us=6=6H。程序如下:程序如下:ORG 0000H LJMP START ORG 000BH LJMP DS0 ;T0中断入口中断入口 ORG 1000H43START:MOV TMOD,#02H ;选选T0的工作方式为的工作方式为2 MOV TL0,#06H ;给给T0置初值置初值 MOV TH0,#06H SETB PT0 ;定时器定时器T0为高优先级中断为高优先级中断 SETB ET0 ;定时器定时器T0允许中断允许中断 SETB EA ;CPU开中断开中断 SETB TR0 ;启动定时器启动定时器T0 SJMP$;循环等待循环等待DS0:CPL P1.1 ;对对P1.1取反,输出取反,输出0.5ms方波方波 RETI44