《6定时器计数器结构及工作方式详解》由会员分享,可在线阅读,更多相关《6定时器计数器结构及工作方式详解(45页珍藏版)》请在金锄头文库上搜索。
1、微型计算微型计算机原理及接口技术机原理及接口技术授课专业:自动化授课专业:自动化授课学时:授课学时:60学时学时1第六章第六章MCS-51定时器定时器/计数器计数器6.1定时器定时器/计数器结构及工作方式计数器结构及工作方式16.2定时器应用举例定时器应用举例226.1 6.1 定定时器器/ /计数器数器结构及工作方式构及工作方式3学习内容学习内容1结构结构工作方式工作方式2寄存器寄存器31、MCS-51单片机内有单片机内有两个可编程的两个可编程的两个可编程的两个可编程的定时器定时器/计数计数器器T0、T1,其逻辑结构如下图所示,其逻辑结构如下图所示:图6-1 MCS-51定时器/计数器逻辑结
2、构图一一、定、定时器器/ /计数器数器结构构T0T0:是:是1616位加法位加法位加法位加法计数器,计数器,分别由两个八位专用寄存器分别由两个八位专用寄存器TH0TH0和和TL0TL0组成。组成。T1T1:是:是1616位加法位加法位加法位加法计数器,计数器,分别由两个八位专用寄存器分别由两个八位专用寄存器TH1TH1和和TL1TL1组成。组成。用来设置定用来设置定时器的时器的工作工作工作工作方式方式方式方式。用来控制定时器的用来控制定时器的启启启启动、停止及中断动、停止及中断动、停止及中断动、停止及中断。42、定时器、定时器/计数器功能计数器功能v定时器定时器是通过内部计数器的计数来实现的,
3、是通过内部计数器的计数来实现的,计数脉冲计数脉冲计数脉冲计数脉冲来来自单片机的自单片机的内部内部内部内部,其频率是振荡(晶体)频率的,其频率是振荡(晶体)频率的1/12,即,即每个机器周期每个机器周期每个机器周期每个机器周期产生一个计数脉冲,产生一个计数脉冲,计数器计数器计数器计数器加加加加1 1,直至计满溢出。,直至计满溢出。5v计数器计数器是对是对外外来脉冲来脉冲来脉冲来脉冲进行计数。计数器对来自输入引脚进行计数。计数器对来自输入引脚P3.4和和P3.5的外部信号计数,外部脉冲的的外部信号计数,外部脉冲的负跳变负跳变负跳变负跳变(下降沿)(下降沿)触发计数触发计数触发计数触发计数。检测一个
4、由检测一个由1到到0的负跳变需要的负跳变需要两个机器周期两个机器周期。所。所以最高计数频率为以最高计数频率为晶体频率的晶体频率的1/24。6问题的提出 晶振频率为晶振频率为12MHz时,定时,定时器和计数器的最高计数频时器和计数器的最高计数频率各是多少?率各是多少?7 回答:晶振频率为晶振频率为12MHz时,定时时,定时器和计数器的最高计数频率器和计数器的最高计数频率各为各为1MHz、500KHz.8分三类:分三类:定时器定时器/计数器方式寄存器:计数器方式寄存器:TMOD定时器定时器/计数器控制寄存器:计数器控制寄存器:TCON定时器初值寄存器:定时器初值寄存器:TH0TL0TH1TL1二、
5、定二、定时器器/ /计数器寄存器数器寄存器91、定时器、定时器/计数器方式寄存器计数器方式寄存器TMOD(89H)TMODGATEC/TM1M0GATEC/TM0M1D7D6D5D4D3D1D2D0T1方式控制T0方式控制图6-2 TMOD 寄存器各位定义GATE:门门控控位位,用用来来控控制制定定时时器器/计计数数器器的的启启动动是是否受外部中断请求信号的影响。否受外部中断请求信号的影响。GATE=0,不受影响,不受影响,仅由控制位仅由控制位TRx控制;控制;GATE=1,受,受TRx和外部中断请求信号共同控制。和外部中断请求信号共同控制。10C/T:定时或计数功能选择位。定时或计数功能选择
6、位。C/T=1,为,为计数器计数器方式;方式;C/T=0,为,为定时器定时器方式。方式。M1M0:定时器四种工作方式选择定时器四种工作方式选择:00:方式方式0:13位位定时器定时器/计数器计数器01:方式方式1:16位位定时器定时器/计数器计数器10:方式方式2:自动重装初值的自动重装初值的8位位定时器定时器/计数器计数器11:方式方式3:T0分成两个分成两个8位位定时器定时器/计数器计数器11例例6-1:某一系统使某一系统使T1作为定时器,采用方式作为定时器,采用方式2,使,使T0作为计数器采用方式作为计数器采用方式1,T0、T1的门控位均为的门控位均为0,请设置,请设置TMOD的值。的值
7、。00100101即:即:TMOD=25H.TMODGATEC/TM1M0GATEC/TM0M1D7D6D5D4D3D1D2D0T1方式控制T0方式控制 122、定时器、定时器/计数器控制寄存器计数器控制寄存器TCON(88H,可位寻址,可位寻址)TRx:Tx的的运行控制位运行控制位。TRx=1,启动启动定时器定时器/计数器计数器TRx=0,关闭关闭定时器定时器/计数器计数器 x=0、1133、定时器初值寄存器、定时器初值寄存器TH0TL0TH1TL1用用于于存存放放计计数数初初值值,具具有有自自动动加加1功功能能,加加满满后后溢溢出,它们的字节地址是出,它们的字节地址是: TH1(8TH1(
8、8位位位位) ) TL1(8TL1(8位位位位) ) TH0(8TH0(8位位位位) ) TL0(8TL0(8位位位位) )8DH8BH8CH8AH8DH8BH8CH8AH根根据据定定时时器器/计计数数器器工工作作方方式式,计计数数长长度度可可分分别别选选择择:8位,位,13位,位,16位。位。14MCS-51的的定定时时器器/计计数数器器共共有有四四种种工工作作方方式式,其中:其中:T0有方式有方式0、1、2、3四种;四种;T1有方式有方式0、1、2三种。三种。三、工作方式三、工作方式151、工作方式、工作方式0(以(以T0为例)为例)13位定时器位定时器/计数器计数器TMOD00M0M1C
9、/TGATEINT0(P3.2)T0(P3.4)C/T=1C/T=0振荡器 12控制TL0(低5位)TH0TCONTF0TR 0中断图 6-4 方式 0(13位计数器)(高8位)S1S2TL0的高的高3位位没有用没有用。16C/T=1,S1接下面,接下面,T0作计数器,对作计数器,对P3.4引脚输入引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加的外部脉冲计数,当脉冲发生负跳变时,计数器加1,计数值公式为:,计数值公式为:N=213x=8192x其中:其中:N为计数值,为计数值,x是是THx、TLx的初值。的初值。x=8191(1FFFH)8191(1FFFH)时,时,N最小值最小值=1
10、1;x=0 0时,时,N最大值最大值=81928192。则则N的范围:的范围:1 181928192。17C/T=0时,时,S1接上面,接上面,T0作定时器,对机器周期作定时器,对机器周期脉冲脉冲Tcy计数。计数。v求定时时间由下式确定:求定时时间由下式确定:t=NTcy=(213x)Tcy=(8192x)Tcy其中:其中:t为定时时间。为定时时间。v求计数初值计算公式:求计数初值计算公式:x=213t/Tcy=8192t/Tcy182、工作方式、工作方式1(以(以T0为例)为例)16位定时器位定时器/计数器计数器TMOD10M0M1C/TGATEINT0(P3.2)T0(P3.4)C/T=1
11、C/T=0振荡器12控制TL0(8位)TH0(8位)TCONTF0TR0中断图6-5 方式1(16位计数器)19C/T=1,S1接下面,接下面,T0作计数器,对作计数器,对P3.4引脚输入引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加的外部脉冲计数,当脉冲发生负跳变时,计数器加1,计数值公式为:,计数值公式为:N=216x=65536x其中:其中:N为计数值,为计数值,x是是THx、TLx的初值。的初值。x=65535(FFFFH)65535(FFFFH)时,时,N最小值最小值=1 1;x=0 0时,时,N最大值最大值=6553665536;则则N的范围:的范围:1 1655366553
12、6。20C/T=0时,时,S1接上面,接上面,T0作定时器,对机器周期作定时器,对机器周期脉冲脉冲Tcy计数。计数。v求定时时间由下式确定:求定时时间由下式确定:t=NTcy=(216x)Tcy=(65536x)Tcy其中:其中:t为定时时间。为定时时间。v求计数初值计算公式:求计数初值计算公式:x=216t/Tcy=65536t/Tcy213、工作方式、工作方式2(以(以T0为例)为例)8位定时器位定时器/计数器计数器TL0作为作为8位加法计数器,位加法计数器,TH0作为初值寄存器作为初值寄存器用。用。TL0加法计数器溢出时置加法计数器溢出时置TF0=1,而且发出,而且发出重装载信号,使三态
13、门打开,将重装载信号,使三态门打开,将TH0中的初值自中的初值自动送入动送入TL0。22C/T=1,S1接下面,接下面,T0作计数器,对作计数器,对P3.4引脚输入的引脚输入的外部脉冲计数,当脉冲发生负跳变时,计数器加外部脉冲计数,当脉冲发生负跳变时,计数器加1,计数值公式为:计数值公式为:N=28x=256x其中:其中:N为计数值,为计数值,x是是THx、TLx的初值。的初值。x=255(FFH)255(FFH)时,时,N最小值最小值=1 1;x=0 0时,时,N最大值最大值=256256;则则N的范围:的范围:1 1256256。23C/T=0时,时,S1接上面,接上面,T0作定时器,对机
14、器周期作定时器,对机器周期脉冲脉冲Tcy计数。计数。v求定时时间由下式确定:求定时时间由下式确定:t=NTcy=(28x)Tcy=(256x)Tcy其中:其中:t为定时时间。为定时时间。v求计数初值计算公式:求计数初值计算公式:x=28t/Tcy=256t/Tcy24工作方式工作方式0:x=213t/Tcy=213500us/2us=8192250=7942=1F06H=1111100000110B则则TL0=00000110B=06H,TH0=11111000B=0F8H例例6-2:已知晶振已知晶振6MHz,要求定时,要求定时0.5ms,试分别,试分别求出求出T0工作于方式工作于方式0、方式
15、、方式1、方式、方式2时的定时初值。时的定时初值。解:解:机器周期机器周期Tcy=12/fosc=12/6MHz=2us;定时定时t=0.5ms=500us.25工作方式工作方式1:x=216t/Tcy=216500us/2us=65536250=65286=FF06H则则TL0=06H,TH0=0FFH工作方式工作方式2:x=28t/Tcy=28500us/2us=256250=6=6H则则TL0=06HTH0=06H(重装初值寄存器,其值不变)(重装初值寄存器,其值不变)266 6. .2 2 定定时器器应用用举例例学习内容学习内容1应用步骤应用步骤2应用举例应用举例271、T0、T1的选
16、择使用;的选择使用;2、合理选择工作方式、合理选择工作方式TMOD;3、计算初值、计算初值;x=2nt/Tcy其中,其中,n与工作方式有关,与工作方式有关,方式方式0,n=13;方式方式1,n=16;方式方式2、3时,时,n=8。一、定一、定时器器应用步用步骤284、编制应用程序:、编制应用程序:定时器定时器/计数器的初始化:计数器的初始化:写写TMOD;写入定时初值;写入定时初值;设置中断系统的设置中断系统的IP、IE;启动定时器运行(启动定时器运行(TRx)。)。正确编制定时器正确编制定时器/计数器中断服务程序。计数器中断服务程序。一、定一、定时器器应用步用步骤29例例6-3:设单片机晶振
17、频率设单片机晶振频率fosc=12MHz,使用,使用T0以方以方式式0产生周期为产生周期为1ms的方波,并由的方波,并由P1.0输出。以中断方输出。以中断方式完成编程。式完成编程。解:解:1 1、TMODTMOD配置配置配置配置T1不用,有关位设置为不用,有关位设置为0;T0的的GATE=0,C/T=0,M1M000(方式(方式0)。)。则则TMOD初始化设置为初始化设置为00000000B,即,即00H。二、定二、定时器器编程程举例例302、计算初值、计算初值产生产生1ms的方波,只需在的方波,只需在P1.0端以端以0.5ms为周期交为周期交替输出高低电平即可,因此定时时间为替输出高低电平即
18、可,因此定时时间为0.5ms。Tcy=12/fosc=12/12MHz=1usx=213t/Tcy=8192-500us/1us=8192-500=7692=1E0CH=1111000001100B,TH0=11110000B=0F0H;TL0=00001100B=0CH3、启动和中断、启动和中断定时器定时器T0的启动由的启动由TR0控制,即控制,即TR0=1启动。启动。定时器定时器T0的中断允许由的中断允许由ET0和和EA控制,控制,即即ET0=1、EA=1。314、程序设计、程序设计ORG0000HLJMPMAINORG000BHLJMPDS0ORG0100HMAIN:MOVSP,#30H
19、MOVTL0,#0CHMOVTH0,#0F0HMOVTMOD,#00HSETBET0SETBEASETBTR0SJMP$DS0:MOVTL0,#0CHMOVTH0,#0F0HCPLP1.0RETI32练习题:练习题:设单片机晶振频率设单片机晶振频率fosc=6MHz,使用,使用T1以方以方式式2产生周期为产生周期为1ms的方波,并由的方波,并由P1.0输出。以中断方输出。以中断方式完成。式完成。33一、填空题一、填空题1、MCS-51单片机的单片机的51子系列含有子系列含有个个位的位的法定时法定时器。器。2、定时器、定时器T0有有种工作模式;定时器种工作模式;定时器T1有有种工作模式。种工作模
20、式。3、欲对、欲对300个外部事件计数,可以选用定时个外部事件计数,可以选用定时/计数器计数器T1的模的模式式或模式或模式。4、当定时器、当定时器T0工作在方式工作在方式时,要占定时器时,要占定时器T1的的TR1和和TF1两个控制位。两个控制位。5、若系统晶振频率为、若系统晶振频率为12MHz,则,则T0工作于定时和计数方式工作于定时和计数方式时最高(计数)信号频率分别为时最高(计数)信号频率分别为kHz和和kHz。6、TMOD中的中的GATE=1时,表示由时,表示由个信号控制定时器的个信号控制定时器的启停。启停。习题课习题课34二、简答题二、简答题1、单片机系统中的定时和计数功能有何区别?分
21、、单片机系统中的定时和计数功能有何区别?分别适用于什么场合?简述其工作原理。别适用于什么场合?简述其工作原理。2、MCS-51单片机中设有几个定时器单片机中设有几个定时器/计数器?它计数器?它们分别有几种工作方式?这些工作方式各有哪些特们分别有几种工作方式?这些工作方式各有哪些特点?点?3、MCS-51单片机晶振频率为单片机晶振频率为6MHz时,分别写出时,分别写出T1处于不同工作方式时,最大定时时间是多少?处于不同工作方式时,最大定时时间是多少?35三、计算题三、计算题1、MCS-51单片机的时钟晶振频率为单片机的时钟晶振频率为6MHz,若要求,若要求定时为定时为0.2ms和和20ms,定时
22、器,定时器0工作方式为工作方式为0,方,方式式1和方式和方式2,其定时器初值各为多少?,其定时器初值各为多少?2、单片机的晶振为、单片机的晶振为6MHz,设计一个,设计一个100ms的延时的延时程序,已知用定时器程序,已知用定时器T0并工作方式并工作方式1,使用中断,使用中断和查询两种方式。和查询两种方式。3、设、设MCS-51单片机的晶振频率为单片机的晶振频率为6MHz,若由,若由P1.1引脚输出引脚输出1000Hz方波,试编写其应用程序,使用方波,试编写其应用程序,使用中断方式。中断方式。36一、填空题一、填空题1、MCS-51单片机的单片机的51子系列含有子系列含有2个个16位的位的加加
23、法定法定时器。时器。2、定时器、定时器T0有有4种工作模式;定时器种工作模式;定时器T1有有3种工作模式。种工作模式。3、欲对、欲对300个外部事件计数,可以选用定时个外部事件计数,可以选用定时/计数器计数器T1的模的模式式0或模式或模式1。4、当定时器、当定时器T0工作在方式工作在方式3时,要占定时器时,要占定时器T1的的TR1和和TF1两个控制位。两个控制位。5、若系统晶振频率为、若系统晶振频率为12MHz,则,则T0工作于定时和计数方式工作于定时和计数方式时最高(计数)信号频率分别为时最高(计数)信号频率分别为1000kHz和和500kHz。6、TMOD中的中的GATE=1时,表示由时,
24、表示由2个信号控制定时器的个信号控制定时器的启停。启停。答答案案37二、简答题二、简答题1、单片机系统中的定时和计数功能有何区别?分别适用于、单片机系统中的定时和计数功能有何区别?分别适用于什么场合?简述其工作原理。什么场合?简述其工作原理。答:答:定时功能是对定时功能是对片内机器周期计数片内机器周期计数,从计数开始到计满溢,从计数开始到计满溢出为止,可以由出为止,可以由计数值计数值机器周期值机器周期值来得到一个准确的时间来得到一个准确的时间值;而计数功能则是对单片机引脚上的值;而计数功能则是对单片机引脚上的外来随机脉冲进行计外来随机脉冲进行计数数,一般情况下难以折算为精确时间。,一般情况下难
25、以折算为精确时间。定时功能适用于需要定时功能适用于需要准确计量一段时间的场合准确计量一段时间的场合;而计数;而计数功能功能适用于对外部事件的计数适用于对外部事件的计数。在单片机内,定时和计数的实现都是借助一个加在单片机内,定时和计数的实现都是借助一个加1计数计数器,工作原理基本一样,只是定时方式下计数脉冲为器,工作原理基本一样,只是定时方式下计数脉冲为fose/12,计数方式下的计数脉冲由,计数方式下的计数脉冲由单片机外引脚(单片机外引脚(T0或或T1)来输)来输入入。382、MCS-51单片机中设有几个定时器单片机中设有几个定时器/计数器?它们分别有几种工作方式?这计数器?它们分别有几种工作
26、方式?这些工作方式各有哪些特点?些工作方式各有哪些特点?答:答:MCS-51单片机内部中有两个单片机内部中有两个16位可编程的定时器位可编程的定时器/计数器。定时器计数器。定时器/计数计数器有四种工作方式:方式器有四种工作方式:方式0,方式,方式1,方式,方式2,方式,方式3。其中,方式。其中,方式3只适用只适用于于T0。以。以T0为例:为例:方式方式0,16位寄存器只用了位寄存器只用了13位,位,TL0的高三位未用的高三位未用。由由TH0的的8位和位和TL0的低的低5位组成一个位组成一个13位加法计数器;位加法计数器;方式方式1,和方式,和方式0的工作相同,唯一的差别是的工作相同,唯一的差别
27、是TH0和和TL0组成一个组成一个16位加法位加法计数器;计数器;方式方式2,把,把TL0配置成一个可以配置成一个可以自动重装初值的自动重装初值的8位计数器位计数器,TL0作为作为8位加位加法计数器,法计数器,TH0作为初值寄存器作为初值寄存器。TH0由软件预置值。当由软件预置值。当TL0产生溢出时,产生溢出时,一方面使溢出标志一方面使溢出标志TF0置置1,同时把,同时把TH0中的中的8位数据重新装入位数据重新装入TL0中;中;方式方式3,将使,将使TL0和和TH0成为两个相互独立的成为两个相互独立的8位计数器位计数器,TL0利用利用T0本身本身的一些控制,它的操作与方式的一些控制,它的操作与
28、方式0和方式和方式1类似。而类似。而TH0被规定为只用作定时被规定为只用作定时器功能,对机器周期计数,并借用了器功能,对机器周期计数,并借用了T1的控制位的控制位TR1和和TF1。在这种情况。在这种情况下下TH0控制了控制了T1的中断。这时的中断。这时T1还可以设置为方式还可以设置为方式02,用于任何不需要,用于任何不需要中断控制的场合,用作串行口的波特率发生器。中断控制的场合,用作串行口的波特率发生器。39三、计算题三、计算题1、MCS-51单片机的时钟晶振频率为单片机的时钟晶振频率为6MHz,若要求定时为,若要求定时为0.2ms和和20ms,定时器,定时器0工作方式为工作方式为0,方式,方
29、式1和方式和方式2,其定时器初值,其定时器初值各为多少?各为多少?答:答:已知时钟晶振频率为已知时钟晶振频率为6MHz,Tcy=12/fosc=12/6MHz=2us3、MCS-51单片机晶振频率为单片机晶振频率为6MHz时,分别写出时,分别写出T1处于不同处于不同工作方式时,最大定时时间是多少?工作方式时,最大定时时间是多少?答:答:已知时钟晶振频率为已知时钟晶振频率为6MHz,则,则Tcy=12/fosc=12/6MHz=2us。定时时间:定时时间:t=(2nx)Tcy,(1)方式)方式0时:时:x=0,tmax=(2130)Tcy=81922us=16.384ms(2)方式)方式1时:时
30、:x=0,tmax=(2160)Tcy=655362us=131.072ms(3)方式)方式2时:时:x=0,tmax=(280)Tcy=2562us=512us40(1)方式)方式0时:设时间常数为时:设时间常数为x,x=213t/Tcy=8192-t/2us定时为定时为0.2ms,有,有x=8192-200us/2us=8092=1F9CH=1111110011100B,则则TH0=11111100B=0FCH,TL0=00011100B=1CH;定时为定时为20ms,有,有x=213t/Tcy=8192-20000us/2us=1808,无法由定时器直接产生。无法由定时器直接产生。(2)
31、方式)方式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,TH0=0D8H,TL0=0F0H。412、单片机的晶振为、单片机的晶振为6MHz,设计一个,设计一个100ms的延时程序,已知的延时程序,已知用定时器用定时器T0并工作方式并工作方式1,使用查询方式。,使用查询方式。答:答:机器周期机器周期Tcy=12/fosc=12/6MHz=2us。初值初值x=216t/T
32、cy=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,则,则TH0=9CH,TL0=9CH;定时为定时为20ms,无法由定时器直接产生。无法由定时器直接产生。42查询程序如下:查询程序如下:MOVTMOD,#01H;设置定时器设置定时器T0为工作方式为工作方式1MOVTH0,#3CH;给定时器给定时器T0置初值置初值MOVTL0,#0B0HMOVIE,#00H;禁止中断禁
33、止中断SETBTR0;启动定时器启动定时器T0HERE:JNBTF0,HERE;判断计数溢出标志位,是判断计数溢出标志位,是“1”,CLRTF0;计数结束计数结束CLRTR0433、设、设MCS-51单片机的晶振频率为单片机的晶振频率为6MHz,若由,若由P1.1引脚输引脚输出出1000Hz方波,试编写其应用程序,使用中断方式。方波,试编写其应用程序,使用中断方式。答:答:因为要输出因为要输出1000Hz方波,其周期为方波,其周期为1ms,故定时时间是,故定时时间是0.5ms,可使用定时,可使用定时/计数器计数器T0或或T1的工作方式的工作方式2,选,选T0。机器周期机器周期Tcy=12/fo
34、sc=12/6MHz=2us。初值初值x=28t/Tcy=256-500us/2us=6=6H。程序如下:程序如下:ORG0000HLJMPSTARTORG000BHLJMPDS0;T0中断入口中断入口ORG1000H44START:MOVTMOD,#02H;选选T0的工作方式为的工作方式为2MOVTL0,#06H;给给T0置初值置初值MOVTH0,#06HSETBPT0;定时器定时器T0为高优先级中断为高优先级中断SETBET0;定时器定时器T0允许中断允许中断SETBEA;CPU开中断开中断SETBTR0;启动定时器启动定时器T0SJMP$;循环等待循环等待DS0:CPLP1.1;对对P1.1取反,输出取反,输出0.5ms方波方波RETI45