单片机-第六章-定时器计数器_第1页
单片机-第六章-定时器计数器_第2页
单片机-第六章-定时器计数器_第3页
单片机-第六章-定时器计数器_第4页
单片机-第六章-定时器计数器_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第6 6章章 MCS-51MCS-51单片机定时器单片机定时器/ /计数器计数器6.1 MCS-516.1 MCS-51定时器定时器/ /计数器的结构及原理计数器的结构及原理6.2 MCS-516.2 MCS-51定时器定时器/ /计数器的的控制计数器的的控制6.3 MCS-516.3 MCS-51定时器定时器/ /计数器的工作方式计数器的工作方式6.4 6.4 定时器应用举例定时器应用举例6.1 6.1 定时器定时器/ /计数器的结构及原理计数器的结构及原理主要内容主要内容6.1.1 MCS-516.1.1 MCS-51单片机定时器的结构单片机定时器的结构6.1.2 MCS-516.1.2

2、 MCS-51单片机定时器的工作原理单片机定时器的工作原理6.1.1 MCS-516.1.1 MCS-51单片机定时器的结构单片机定时器的结构 MCS-51MCS-51单片机定时器单片机定时器/ /计数器逻辑结构图计数器逻辑结构图: MCS-51MCS-51主要由如下构成主要由如下构成: 三个三个1616位的可编程定时器位的可编程定时器/ /计数器:定时器计数器:定时器/ /计计数器数器0 0、1 1和和2 2。 每个定时器有两部分构成:每个定时器有两部分构成:THxTHx和和TLxTLx 特殊功能寄存器特殊功能寄存器T2MODT2MOD和和T2CON T2CON ,主要对,主要对T2T2进进

3、行控制。行控制。 特殊功能寄存器特殊功能寄存器TMODTMOD和和TCON TCON ,主要对,主要对T0T0和和T1T1进行控制。进行控制。引脚引脚P3.5P3.5、P3.4P3.4、P1.0P1.0,输入计数脉冲。,输入计数脉冲。定时器定时器T0T0、T1T1和和T2T2是是3 3个中断源,可以向个中断源,可以向CPU CPU 发发出中断请求。出中断请求。定时器定时器/ /计数器计数器T2T2增加了两个增加了两个8 8位的寄存器:位的寄存器:RCAP2HRCAP2H和和RCAP2LRCAP2L。特殊功能寄存器之间通过内部总线和控制逻辑电特殊功能寄存器之间通过内部总线和控制逻辑电路连接起来。

4、路连接起来。 6.1.2 MCS-51 MCS-51单片机定时器的工作原理单片机定时器的工作原理 定时器定时器/ /计数器计数器T0T0、T1T1、T2 T2 的内部结构简图如下图所示。的内部结构简图如下图所示。C/ /T=0中断请求中断请求振荡器振荡器TLx(8位位)THx(8位位)Tx12分频分频TFxC/ /T=1控制控制TRx 定时器的实质是一个加定时器的实质是一个加1 1计数器计数器。C/T =0 C/T =0 ,为定时器方式。,为定时器方式。计数信号由片内振荡电路提供,振荡脉冲计数信号由片内振荡电路提供,振荡脉冲1212分频送给计分频送给计数器,每个机器周期计数器值增数器,每个机器

5、周期计数器值增1 1。例如例如:如果晶振频率为:如果晶振频率为12MHz12MHz,则最高计数频率为,则最高计数频率为0.5MHz0.5MHz C/T =1 C/T =1 ,为计数方式,为计数方式。计数信号由计数信号由TxTx引脚引脚(P3.4(P3.4、P3.5P3.5和和P1.0)P1.0)输入,输入,每输入一有效信号,相应的计数器中的内容进每输入一有效信号,相应的计数器中的内容进行加行加1 1。 控制信号控制信号TRxTRx=1=1时,定时器启动时,定时器启动。 当定时器由全当定时器由全1 1加到全加到全0 0时计满溢出,从时计满溢出,从0 0开始继开始继续计数,续计数,TFxTFx=1

6、 =1 ,向,向CPUCPU申请中断。申请中断。6.2 6.2 定时器定时器/ /计数器的控制计数器的控制1 1、T0T0、T1 T1 工作模式寄存器工作模式寄存器TMOD TMOD 功能:确定定时器的工作模式。功能:确定定时器的工作模式。其格式如图所示:其格式如图所示:TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0图图6-3 6-3 定时器方式寄存器定时器方式寄存器TMODTMOD GATEGATE外部门控制位。外部门控制位。GATEGATE1 1,使用外部控制门。,使用外部控制门。 TRxTRx=1=1, P3.2P3.2(P3.3P3.3)

7、=1=1时,时,启动定时器。启动定时器。GATEGATE0 0,不使用外部门控制计数器不使用外部门控制计数器 C/TC/T定时或计数方式选择位定时或计数方式选择位 。C/TC/T0 0时,为定时器时,为定时器C/TC/T1 1时,为计数器时,为计数器 采样过程:采样过程:CPUCPU在每机器周期在每机器周期S5P2S5P2期间,输入信号进行期间,输入信号进行采样采样。若前一机器周期采样值为。若前一机器周期采样值为1 1,下一机器周期采样值为,下一机器周期采样值为0 0,则计数器增,则计数器增1 1,随后的机器周期,随后的机器周期S3P1S3P1期间,新的计数值期间,新的计数值装入计数器。装入计

8、数器。 M1M1、M0M0工作模式选择位工作模式选择位。表表6-1 6-1 定时器定时器/ /计数器的工作模式计数器的工作模式M1M1M0M0工作模式工作模式功功 能能0 00 0模式模式0 01313位定时器位定时器/ /计数器计数器 0 01 1模式模式1 11616位定时器位定时器/ /计数器计数器1 10 0模式模式2 28 8位自动重置定时器位自动重置定时器/ /计数器计数器1 11 1模式模式3 3定时器定时器0 0:TL0TL0为为8 8位定时器位定时器/ /计数器,计数器,TH0TH0为为8 8位定时器。位定时器。定时器定时器1 1:无此方式:无此方式2 2、T0T0、T1T1

9、的控制寄存器的控制寄存器TCONTCONTCON(88H)D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0定时器的控制寄存器定时器的控制寄存器 TF1TF1、TF0TF0:T1T1、T0T0的溢出标志位的溢出标志位计数溢出,计数溢出,TFxTFx=1=1。中断方式:中断方式:自动清零;自动清零;查询方式:查询方式:软件清零。软件清零。TR1TR1、TR0TR0:T1T1、T0T0启停控制位启停控制位。 置置1 1,启动定时器;,启动定时器; 清清0 0,关闭定时器。,关闭定时器。IE1IE1、IE0IE0:外部中断:外部中断1 1、0 0请求标志位请求标志位IT

10、1IT1、IT0IT0:外部中断:外部中断1 1、0 0触发方式选择位触发方式选择位注意:注意: GATE=1 GATE=1 ,TRxTRx与与P3.2P3.2(P3.3P3.3) 的配合。的配合。6.3 6.3 定时器定时器T0T0、T1T1的工作模式的工作模式6.3.16.3.1 模式模式0 0的逻辑结构及应用的逻辑结构及应用 M1M0M1M00000,选择模式,选择模式0 0。逻辑结构如图逻辑结构如图6-56-5所示。所示。 (以(以T0T0为例)为例) T0T0的结构:的结构:1313位定时器位定时器/ /计数器。计数器。 由由TH0TH0的的8 8位、位、TL0TL0的低的低5 5位

11、构成位构成( (高高3 3位未用位未用) ) 工作过程:工作过程:TL0TL0溢出后向溢出后向TH0TH0进位,进位,TH0TH0溢出后将溢出后将TF0TF0置位,并向置位,并向 CPUCPU申请中断申请中断。 定时时间定时时间= =(213-213-定时初值)定时初值)机器周期机器周期 最大定时时间最大定时时间:213213机器周期机器周期C/T=1C/T=1,计数方式,计数方式。计数脉冲由。计数脉冲由P3.4P3.4引脚输入。引脚输入。C/T=0C/T=0时,定时方式时,定时方式。图图6-4 6-4 模式模式0 0的逻辑结构图的逻辑结构图6.3.2 6.3.2 模式模式1 1的逻辑结构及应

12、用的逻辑结构及应用 M1M0M1M00101时,选择模式时,选择模式1 1。逻辑结构如图所示。逻辑结构如图所示。 T0T0的结构:的结构:1616位定时器位定时器/ /计数器。计数器。 TL0TL0:存放计数初值的低:存放计数初值的低8 8位。位。 TH0TH0存放计数初值的高存放计数初值的高8 8位;位;定时时间定时时间=(2=(21616- -定时初值定时初值) )机器周期机器周期最大定时时间最大定时时间:2 21616机器周期机器周期6.3.3 6.3.3 模式模式2 2的逻辑结构及应用的逻辑结构及应用M1 M0 M1 M0 1010时,选择模式时,选择模式2 2。逻辑结构如图。逻辑结构

13、如图6-76-7所示。所示。T0T0的结构的结构:TL0TL0:8 8位的定时器位的定时器/ /计数器;计数器;TH0TH0:8 8位预置寄存器,用于保存初值。位预置寄存器,用于保存初值。 工作过程:工作过程:当当TL0TL0计满溢出时,计满溢出时,TF0TF0置置1 1,向,向CPUCPU发出中断请求;发出中断请求;同时引起同时引起重装操作重装操作(TH0TH0的计数初值送到的计数初值送到TL0TL0),进行新一轮计数。),进行新一轮计数。 定时时间定时时间=(2=(28 8 - - 初值初值) )机器周期机器周期 最大定时时间最大定时时间=2=28 8 机器周期机器周期优点:模式优点:模式

14、2 2能够进行自动重装载。能够进行自动重装载。模式模式0 0和和1 1计数溢出后,计数溢出后,计数器为全计数器为全0 0。循环定时或计数时,需要重新设置初值。循环定时或计数时,需要重新设置初值。说明:说明:在模式在模式2 2能够满足计数或定时要求时,尽可能使用能够满足计数或定时要求时,尽可能使用模式模式2 2。6.2.4 6.2.4 模式模式3 3的逻辑结构及应用的逻辑结构及应用1 1、T0T0模式模式3 3的结构特点的结构特点 M1 M0 M1 M0 1111,选择模式,选择模式3 3。逻辑结构如图逻辑结构如图 6-86-8和和6-96-9所示:所示: 结构结构:TL0TL0、TH0TH0分

15、为两个独立的分为两个独立的8 8位计数器位计数器 TL0TL0: 8 8位定时器位定时器/ /计数器计数器使用使用T0T0所有的资源和控制位所有的资源和控制位 TH0TH0:8 8位定时器位定时器使用使用T1T1所有的资源所有的资源( (中断向量、中断控制中断向量、中断控制ET1ET1、PT1)PT1)和控和控制位(制位(TR1TR1、TF1TF1)图图6-7 6-7 模式模式3 3下下T0T0的逻辑结构图的逻辑结构图2 2、T0T0模式模式3 3时时T1T1的工作模式的工作模式T1T1可以模式可以模式0 0模式模式2 2工作。工作。T1T1的结构如图的结构如图6-96-9所示所示由于由于TF

16、1TF1及中断矢量被及中断矢量被TH0TH0占用,所以占用,所以T1T1仅用作波特率发仅用作波特率发生器或其它不用中断的地方。生器或其它不用中断的地方。T1T1作波特率发生器,其计数溢出直接送至串行口。作波特率发生器,其计数溢出直接送至串行口。设置好工作方式,串行口波特率发生器开始自动运行。设置好工作方式,串行口波特率发生器开始自动运行。 TMODTMOD中中T1T1的的M1M0=11M1M0=11,T1T1停止工作。停止工作。图图6-9 6-9 模式模式3 3下,下,T1T1的逻辑结构图的逻辑结构图思考:思考:T0T0工作在模式工作在模式3 3,T1T1怎么进行方式设置?怎么进行方式设置?串

17、行口串行口重新装入重新装入C/T=1C/T=0T1(P3.5)振荡器振荡器12分频分频TL 1(8位位)TH 1(8位位)1 1、定时器、定时器/ /计数器工作模式的选择方法计数器工作模式的选择方法(1 1)首先计算计数值)首先计算计数值N N(2 2)确定工作模式)确定工作模式原则是尽可能地选择模式原则是尽可能地选择模式2 2若若 N 256N 256选择模式选择模式2 2,否则选择模式,否则选择模式1 1(3 3)如果需要增加一个定时器)如果需要增加一个定时器/ /计数器计数器选择模式选择模式3 3。2 2、定时器、定时器/ /计数器初值计数器初值X X的计算方法的计算方法因为因为 X X

18、 + N = 2 + N = 28 8或或2 21616所以所以 X X = 2 = 28 8或或2 21616-N-N(1 1)对定时器)对定时器设定时时间为设定时时间为t tN = t/N = t/机器周期机器周期所以所以X = 2X = 28 8或或2 21616- t/- t/机器周期机器周期(2 2)对计数器)对计数器X = 2X = 28 8或或2 21616- N- N例例 设单片机的振荡频率为设单片机的振荡频率为12MHz12MHz,用定时器,用定时器/ /计数器计数器0 0的的模式模式1 1编程,在编程,在P1.0P1.0引脚产生一个周期为引脚产生一个周期为10001000s

19、 s的方波,定的方波,定时器时器T0T0采用中断的处理方式。采用中断的处理方式。定时器的分析过程。定时器的分析过程。工作方式选择工作方式选择 需要产生周期信号时,选择定时方式。定时时间到了对需要产生周期信号时,选择定时方式。定时时间到了对输出端进行周期性的输出即可。输出端进行周期性的输出即可。 工作模式选择工作模式选择 根据定时时间长短选择工作模式。根据定时时间长短选择工作模式。 首选模式首选模式2 2,可以省略重装初值操作。,可以省略重装初值操作。 定时时间计算:定时时间计算:周期为周期为10001000s s的方波要求定时器的定的方波要求定时器的定时时间为时时间为500500s s,每次溢

20、出时,将,每次溢出时,将P1.0P1.0引脚的输出取反,引脚的输出取反,就可以在就可以在P1.0P1.0上产生所需要的方波。上产生所需要的方波。 定时初值计算:定时初值计算: 振荡频率为振荡频率为12MHz12MHz,则机器周期为,则机器周期为1 1s s。 设定时初值为设定时初值为X X,(65536-X65536-X)1 1s=500s=500s s X=65036=0FE0CH X=65036=0FE0CH定时器的初值为:定时器的初值为:TH0=0FEHTH0=0FEH,TL0=0CHTL0=0CH C C语言程序语言程序:#include #include /包含特殊功能寄存器库包含特

21、殊功能寄存器库sbitsbitP1_0=P10; /P1_0=P10; /进行位定义进行位定义void main( )void main( ) TMOD=0 x01; /T0 TMOD=0 x01; /T0做定时器,模式做定时器,模式1 1TL0=0 x0c;TL0=0 x0c;TH0=0 xfe;TH0=0 xfe;/设置定时器的初值设置定时器的初值ET0=1;ET0=1; / /允许允许T0T0中断中断 EA=1; EA=1; / /允许允许CPUCPU中断中断TR0=1;TR0=1; / /启动定时器启动定时器while(1); /while(1); /等待中断等待中断 void tim

22、e0_int(void) interrupt 1void time0_int(void) interrupt 1 /中断服务程序中断服务程序TL0=0 x0c;TL0=0 x0c;TH0=0 xfe;TH0=0 xfe;/定时器重赋初值定时器重赋初值P1_0=P1_0;P1_0=P1_0;/P1.0/P1.0取反,输出方波取反,输出方波 汇编语言程序:汇编语言程序:ORGORG0000H0000HSJMPSJMPMAINMAINORGORG000BH000BHLJMPLJMPTIME0TIME0MAIN:MAIN:MOV MOV TMOD,#01HTMOD,#01H ;T0T0定时,模式定时,

23、模式1 1MOVMOVTL0,#0CHTL0,#0CH;置定时初值;置定时初值MOVMOVTH0,#0FEH TH0,#0FEH SETBSETBET0ET0;定时器;定时器T0T0开中断开中断SETBSETBEAEA;CPUCPU开中断开中断SETBSETBTR0TR0;启动定时器;启动定时器T0T0SJMPSJMP$ $ ;等待定时器溢出;等待定时器溢出TIME0: TIME0: ; ;中断服务程序中断服务程序MOV MOV TL0,#0CHTL0,#0CHMOVMOVTH0,#0FEHTH0,#0FEH ;重装定时初值;重装定时初值CPLCPLP1.0P1.0 ;P1.0P1.0取反取反

24、RETIRETI ;中断返回;中断返回ENDEND 例例 设单片机的振荡频率为设单片机的振荡频率为12MHz12MHz,用定时器,用定时器/ /计数器计数器0 0编程实现从编程实现从P1.0P1.0输出周期为输出周期为500s500s的方波。的方波。分析:方法同例分析:方法同例6-16-1定时时间:定时时间: 方波周期为方波周期为500s500s,定时,定时250s250s。模式选择模式选择: 定时器定时器0 0可以选择模式可以选择模式0 0、1 1和和2 2。模式。模式2 2最大的定时时间最大的定时时间为为256s256s,满足,满足250s250s的定时要求,选择模式的定时要求,选择模式2

25、 2。(1 1)初值计算)初值计算 (256-X256-X)1 1s=250s=250s s X=6 X=6;则则TH0=TL0=6 TH0=TL0=6 (2 2)程序:)程序:采用中断处理方式的程序采用中断处理方式的程序 :C C语言程序语言程序 :# include # include / /包含特殊功能寄存器库包含特殊功能寄存器库sbitsbit P1_0=P10; P1_0=P10; voidvoidmain( )main( ) TMOD=0 x02;TMOD=0 x02; / /选择工作模式选择工作模式TL0=0 x06;TL0=0 x06;TH0=0 x06;TH0=0 x06;

26、/为定时器赋初值为定时器赋初值 ET0=1;ET0=1; /允许定时允许定时0 0中断中断 EA=1;EA=1;TR0=1;TR0=1;/启动定时器启动定时器0 0while(1);while(1);/等待中断等待中断 void time0_int(void) interrupt 1 void time0_int(void) interrupt 1 P1_0=P1_0;P1_0=P1_0; 汇编语言程序汇编语言程序:ORGORG0000H0000HLJMPLJMPMAIN MAIN ORGORG000BH000BH ;中断处理程序;中断处理程序CPLCPLP1.0P1.0RETIRETIORG

27、 ORG 0030H0030H ;主程序;主程序MAIN:MAIN:MOVMOV TMODTMOD,#02H#02H MOVMOV TL0TL0,#06H#06HMOVMOV TH0TH0,#06H#06HSETBSETB ET0ET0;允许定时器;允许定时器0 0中断中断SETB SETB EAEA;允许;允许CPUCPU中断中断SETBSETB TR0TR0;启动定时器;启动定时器0 0SJMP SJMP $ $ ;等待中断;等待中断ENDEND采用查询方式处理的程序:采用查询方式处理的程序:C C语言程序:语言程序:# include # include sbitsbitP1_0=P10

28、;P1_0=P10;void main()void main() TMOD=0 x02;TMOD=0 x02;TL0=0 x06;TL0=0 x06;TH0=0 x06;TH0=0 x06; TR0=1; TR0=1;while (1)while (1) while(!TF0) ;/while(!TF0) ;/查询计数溢出查询计数溢出TF0=0;TF0=0;P1_0=P1_0;P1_0=P1_0; 汇编语言程序汇编语言程序: :MAIN:MAIN:MOVMOV TMOD,#02HTMOD,#02H ;主程序;主程序MOVMOVTL0,#06HTL0,#06HMOVMOVTH0,#06HTH0,

29、#06HSETBSETBTR0TR0LOOP:LOOP:JNBJNBTF0,$TF0,$ ;查询计数溢出;查询计数溢出CLRCLRTF0TF0CPLCPLP1.0P1.0 SJMPSJMPLOOPLOOPENDEND6.4 6.4 定时器定时器/ /计数器计数器T2T26.4.16.4.1 定时器定时器/ /计数器计数器T2T2的特殊寄存器的特殊寄存器89C5289C52中的中的T2T2是一个是一个1616位的、具有自动重装载和捕获能力位的、具有自动重装载和捕获能力的定时器的定时器/ /计数器。计数器。T2T2的结构:除的结构:除TL2TL2、TH2TH2和控制寄存器和控制寄存器T2CONT2

30、CON及及T2MODT2MOD之外,之外,还增加了捕获寄存器还增加了捕获寄存器RCAP2LRCAP2L(低字节)和(低字节)和RCAP2HRCAP2H(高字节)。(高字节)。T2T2的计数脉冲源有两个:一个是内部机器周期,另一个是的计数脉冲源有两个:一个是内部机器周期,另一个是由由T2T2(P1P10 0)端输入的外部计数脉冲。)端输入的外部计数脉冲。 T2T2有有4 4种工作方式种工作方式自动重装、捕获和波特率发生器、可自动重装、捕获和波特率发生器、可编程时钟输出编程时钟输出。增加了两个引脚增加了两个引脚:T2T2(P1.0P1.0),),T2EXT2EX(P1.1P1.1)。)。1 1、定

31、时器、定时器/ /计数器计数器2 2的控制寄存器的控制寄存器T2CONT2CON 可位寻址和字节寻址。可位寻址和字节寻址。 功能:选择功能:选择T2T2的工作方式和工作模式。的工作方式和工作模式。 允许位寻址和字节寻址。其格式如下:允许位寻址和字节寻址。其格式如下: T2CON(C8H)D7D6D5D4D3D2D1D0TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2图图6-10 6-10 定时器定时器T2T2的控制寄存器的控制寄存器 TF2TF2 :定时器定时器/ /计数器计数器2 2的溢出中断标志位的溢出中断标志位 T2T2溢出时置位,申请中断。软件清零。溢出时置位,申请中

32、断。软件清零。波特率发生器方式波特率发生器方式下,下,RCLKRCLK1 1或或TCLKTCLK1 1时,定时器时,定时器溢出不溢出不对对TF2TF2进行置位进行置位。EXF2EXF2(T2CON.6T2CON.6):):定时器定时器/ /计数器计数器2 2外部触发标志位外部触发标志位EXEN2EXEN21 1,且,且T2EXT2EX引脚上引脚上有负跳变有负跳变将触发捕获或重装操将触发捕获或重装操作,作,EXF2=1EXF2=1,向,向CPUCPU发出中断请求发出中断请求. .RCLKRCLK:串行口接收时钟允许标志位串行口接收时钟允许标志位RCLK=1RCLK=1时时,T2T2溢出信号分频后

33、做串行口工作在模式溢出信号分频后做串行口工作在模式1 1和和3 3的接收波特率。的接收波特率。RCLK=0RCLK=0时时,T1T1溢出信号分频信后做串行口接收波特率。溢出信号分频信后做串行口接收波特率。TCLKTCLK:串行口发送时钟允许标志位串行口发送时钟允许标志位TCLK=1TCLK=1时时,T2T2溢出信号分频后做串行口工做在模式溢出信号分频后做串行口工做在模式1 1和和3 3的的发送波特率。发送波特率。TCLK=0TCLK=0时时,T1T1溢出信号分频后做串行口的发送波特率。溢出信号分频后做串行口的发送波特率。EXEN2 EXEN2 ( T2CONT2CON3 3 ) :定时器定时器

34、/ /计数器计数器2 2外部允许标志外部允许标志位位EXEN2=1EXEN2=1,定时器,定时器/ /计数器计数器2 2没有工作在波特率发生器方式,没有工作在波特率发生器方式,如如T2EXT2EX(P1.1P1.1)引脚上产生负跳变时,将激活)引脚上产生负跳变时,将激活“捕获捕获”或或“重装重装”操作。操作。 EXEN2=0EXEN2=0,T2EXT2EX引脚上的电平变化对定时器引脚上的电平变化对定时器/ /计数器计数器2 2不起不起作用。作用。TR2 TR2 :定时器定时器/ /计数器计数器2 2启动控制位启动控制位TR2=1TR2=1,启动定时器,启动定时器/ /计数器计数器2 2。TR2

35、=0TR2=0,停止定时器,停止定时器/ /计数器计数器2 2。C/T2C/T2:T2T2的定时器或计数器方式选择位。的定时器或计数器方式选择位。 C/T2=1C/T2=1,T2T2为计数器。为计数器。 对对T2T2(P1.0P1.0)引脚输入脉冲进行计数(引脚输入脉冲进行计数(下降沿触发下降沿触发););当当T2T2(P1.0P1.0)产生负跳变时,计数器增产生负跳变时,计数器增1 1。 C/T2=0C/T2=0, T2T2做定时器做定时器。每个机器周期每个机器周期T2T2加加1 1。CP/RL2 CP/RL2 :捕获和重装载方式选择控制位捕获和重装载方式选择控制位捕获方式:捕获方式: CP

36、/RL2=1CP/RL2=1,EXEN2=1EXEN2=1,T2EXT2EX(P1.1P1.1)引脚负跳变将触发捕)引脚负跳变将触发捕获操作。获操作。重装载方式:重装载方式:CP/RL2=0CP/RL2=0,EXEN2=1EXEN2=1,T2EXT2EX引脚有负跳变或引脚有负跳变或T2T2计满溢出时,计满溢出时,触发自动重装操作。触发自动重装操作。 RCLK=1RCLK=1或或TCLK=1TCLK=1时,时,定时器定时器/ /计数器计数器2 2做波特率发生器做波特率发生器。CP/RL2CP/RL2标志位不起作用,当标志位不起作用,当T2T2溢出溢出时强制时强制自动装载自动装载。2 2、数据寄存

37、器、数据寄存器TH2TH2、TL2TL28 8位的数据寄存器位的数据寄存器,组成,组成1616位定时器位定时器/ /计数器。计数器。 字节寻址,字节寻址,地址分别为地址分别为CDHCDH和和CCHCCH。复位复位后,后,TH2=00H,TL2=00HTH2=00H,TL2=00H。3 3、捕获寄存器、捕获寄存器RCAP2HRCAP2H和和RCAP2LRCAP2LRCAP2HRCAP2H:高高8 8位捕获寄存器位捕获寄存器,字节地址为,字节地址为CBHCBH。RCAP2LRCAP2L:低低8 8位捕获寄存器位捕获寄存器,字节地址为,字节地址为CAHCAH。捕获方式捕获方式,保存当前捕获的计数值。

38、,保存当前捕获的计数值。重装方式重装方式,保存重装初值。,保存重装初值。复位后均为复位后均为00H00H。T2MOD(C9H)D7D6D5D4D3D2D1D0 T2OEDCEN 图图6-11 6-11 定时器定时器T2T2的模式控制寄存器的模式控制寄存器 4 4、定时器、定时器/ /计数器计数器2 2的模式控制寄存器的模式控制寄存器T2MODT2MODT2MODT2MOD中标志中标志 :保留位,未定义,为未来功能扩展用。:保留位,未定义,为未来功能扩展用。T2OET2OE:定时器:定时器/ /计数器计数器2 2输出启动位。输出启动位。T2OET2OE1 1,工作在可编程时钟输出方式。,工作在可

39、编程时钟输出方式。输出方波信号至输出方波信号至T2(P1.0)T2(P1.0)引脚。引脚。DCENDCEN:定时器:定时器/ /计数器计数器2 2向上向上/ /向下计数控制位。向下计数控制位。当当DCENDCENl l,T2T2自动向下(递减)计数自动向下(递减)计数当当DCENDCEN0 0, T2T2自动向上(递增)计数自动向上(递增)计数 6.4.2 6.4.2 定时器定时器/ /计数器计数器T2T2的工作方式的工作方式 定时器定时器/ /计数器计数器2 2是一个是一个1616位的加位的加1 1计数器,具有四种工作计数器,具有四种工作方式方式。如表。如表6-26-2所示:所示: 方式选择

40、寄存器:方式选择寄存器:T2CONT2CON和和T2MODT2MOD。注意:无论注意:无论T2T2做定时器还是计数器,都具有捕获和自动重做定时器还是计数器,都具有捕获和自动重装的功能。装的功能。表表6-26-2定时器定时器/ /计数器计数器2 2的工作方式的工作方式RCLK+TCLKRCLK+TCLKCP/RL2CP/RL2TR2TR2T2OET2OE工作方式工作方式0 00 01 10 01616位自动重装方式位自动重装方式0 01 11 10 0捕获方式捕获方式1 1 1 10 0波特率发生器方式波特率发生器方式0 0 1 11 1时钟输出方式时钟输出方式 0 0 关闭关闭T2T2一、一、

41、1616位自动重装方式位自动重装方式CPCPRL2RL20 0,DCEN=0DCEN=0时,选择时,选择自动重装自动重装方式。方式。结构如下图所示:结构如下图所示:T2T2计满溢出时,计满溢出时, TF2TF2置置1 1,申请中断。,申请中断。打开重装载三态缓打开重装载三态缓冲器,将冲器,将RCAP2HRCAP2H和和RCAP2LRCAP2L的内容自动装载到的内容自动装载到TH2TH2和和TL2TL2中。中。EXEN2EXEN21 1且且T2EXT2EX(P1P11 1)端的信号有负跳变时,)端的信号有负跳变时, EXF2EXF2置置1 1,申请中断,申请中断。引起重装载操作。引起重装载操作。

42、RCAPLRCAPHTF2TL 2TH 2EXF2EXEN2T2(P1.0)T2EX(P1.1)溢出溢出T2中断请求中断请求TR2振荡器振荡器12C/T2=0C/T2=1+CP/RL2CP/RL20 0,DCEN=1DCEN=1时,定时器时,定时器/ /计数器计数器2 2既可以既可以增量(加增量(加1 1)和和减量(减量(减减1 1)计数。)计数。T2EXT2EX电平控制计数方向:电平控制计数方向: 当当T2EXT2EX(P1.1P1.1)引脚输入为高电平)引脚输入为高电平1 1时时,T2T2执行增量(加执行增量(加1 1)计数计数。增量计数过程:增量计数过程:计满溢出时,一方面置位计满溢出时

43、,一方面置位TF2TF2,向主机请求,向主机请求中断处理;另一方面将存放在寄存器中断处理;另一方面将存放在寄存器RCAP2LRCAP2L和和RCAP2HRCAP2H中的中的1616位位计数初值自动重装计数初值自动重装TL2TL2和和TH2TH2中,进行新一轮加中,进行新一轮加1 1计数。计数。T2EXT2EX(P1.1P1.1)引脚为低电平)引脚为低电平0 0时,定时器时,定时器/ /计数器计数器2 2执行执行减量(减减量(减1 1)计数。)计数。减量计数过程:减量计数过程:是用是用FFHFFH分别初始化(预置)分别初始化(预置)TL2TL2和和TH2TH2,用用0FFFFH0FFFFH减去计

44、数次数所求得的下限初始化减去计数次数所求得的下限初始化RCAP2LRCAP2L和和RCAP2HRCAP2H。计数器不断减。计数器不断减1 1,直至计数器中的值等于寄存器,直至计数器中的值等于寄存器RCAP2LRCAP2L和和RCAP2HRCAP2H中预置的值时,计满溢出。中预置的值时,计满溢出。 0FFH0FFH重装重装TL2TL2和和TH2TH2,进行新一轮的计数操作,进行新一轮的计数操作增量(加增量(加1 1)计数是以)计数是以6553665536为模。为模。对计数次数求补得到对计数次数求补得到计数初值,此初值初始化计数初值,此初值初始化TL2TL2、TH2TH2和和RCAP2LRCAP2

45、L、RCAP2HRCAP2H陷阱陷阱寄存器。寄存器。在电平控制重装方式下,无论减量增量计数,溢出时在电平控制重装方式下,无论减量增量计数,溢出时TF2TF2置置1 1,EXF2EXF2状态翻转,相当于状态翻转,相当于1717位计数器的最高位。位计数器的最高位。二、捕获方式二、捕获方式 当当CPCPRL2RL2l l,选择捕获方式。,选择捕获方式。存在以下两种情况。存在以下两种情况。T2T2结构结构如下图所示,有两种情况:如下图所示,有两种情况: EXEN=0EXEN=0 定时器定时器2 2的计数溢出,置位的计数溢出,置位TF2TF2,申请中断。,申请中断。 EXEN2EXEN21 1 T2EX

46、T2EX(P1P11 1)端的信号有负跳变时,触发捕获操作。)端的信号有负跳变时,触发捕获操作。将将TH2TH2和和TL2TL2的内容自动捕获到寄存器的内容自动捕获到寄存器RCAP2HRCAP2H和和RCAP2LRCAP2L中同时中同时EXF2EXF2置置1 1,申请中断。,申请中断。 图图6-14 6-14 捕获方式的逻辑结构图捕获方式的逻辑结构图三、波特率发生器方式三、波特率发生器方式 RCLK=1RCLK=1或或TCLKTCLK 1 1时时,选择,选择波特率发生器方式波特率发生器方式。结构。结构如下图所示,从图可以看出:如下图所示,从图可以看出:RCLK=1RCLK=1,T2T2为为接收

47、波特率发生器。接收波特率发生器。 TCLK=1TCLK=1,T2T2为为发送波特率发生器发送波特率发生器。 C/T2C/T20 0,选用内部脉冲,选用内部脉冲。 C/T2C/T21 1,选用外部脉冲,选用外部脉冲。 T2T2(P1.0P1.0)输入负跳变时,计数值增)输入负跳变时,计数值增l l。计数溢出时,触发自动装载操作。计数溢出时,触发自动装载操作。 RCAP2HRCAP2H和和RCAP2LRCAP2L的内容自动装载到的内容自动装载到TH2TH2和和TL2TL2中。中。T2T2用做波特率发生器时,用做波特率发生器时,TH2TH2的溢出不会将的溢出不会将TF2TF2置位,不置位,不产生中断

48、请求产生中断请求。T2EXT2EX还可以作为一个附加的外部中断源还可以作为一个附加的外部中断源。 T2T2用做波特率发生器时,若用做波特率发生器时,若EXEN2=1EXEN2=1,当,当T2EXT2EX有负跳变有负跳变时,时,EXF2EXF2置置1 1,由于不发生重装载或捕获操作,此时,由于不发生重装载或捕获操作,此时T2EXT2EX引引脚可外接一中断源脚可外接一中断源。定时器定时器/ /计数器计数器T2T2作为波特率发生器使用时的编程方法如下:作为波特率发生器使用时的编程方法如下:RCAP2H=0 x30;RCAP2H=0 x30;/设置波特率设置波特率RCAP2L=0 x38;RCAP2L

49、=0 x38;TCLK=1;TCLK=1;/选择定时器选择定时器2 2的溢出脉冲的溢出脉冲作为波特率发生器作为波特率发生器 注意:注意:在波特率发生器工作方式下,在在波特率发生器工作方式下,在 T2T2计数过程中不能再计数过程中不能再读读/ /写写 TH2TH2和和TL2TL2的内容。的内容。四、可编程时钟输出方式四、可编程时钟输出方式 T2OE=1T2OE=1时,时,C/T2=0C/T2=0时,时,T2T2工作于工作于时钟输出方式时钟输出方式。结构如。结构如下图所示:下图所示: 工作过程:工作过程:当当T2T2计满溢出时,计满溢出时,T2T2(P1.0P1.0)引脚状态翻转,)引脚状态翻转,

50、从而输出频率可调、精度很高的方波信号;同时使从而输出频率可调、精度很高的方波信号;同时使RCAP2HRCAP2H和和RCAP2LRCAP2L寄存器内容装入寄存器内容装入TH2TH2和和TL2TL2寄存器中,重新计数。寄存器中,重新计数。在时钟输出方式下,在时钟输出方式下,T2T2溢出时不置位溢出时不置位TF2TF2。当当EXEN2=1EXEN2=1,T2EXT2EX(P1.1P1.1)引脚有引脚有负跳变负跳变时,时,EXF2EXF2将置将置1 1。(同波特率发生器方式同波特率发生器方式)从从P1.0P1.0引脚输出的时钟信号频率为:引脚输出的时钟信号频率为:FoscFosc/ /(4 4(65

51、536-65536-(RCAP2HRCAP2H,RCAP2LRCAP2L)图图6-16 T26-16 T2时钟输出方式下的逻辑结构图时钟输出方式下的逻辑结构图6.5.1 6.5.1 定时器的初始化定时器的初始化 在使用定时器在使用定时器/ /计数器前,应首先对其进行初始化编程。计数器前,应首先对其进行初始化编程。一、定时器的初始化步骤一、定时器的初始化步骤1 1、选择工作模式和工作方式。、选择工作模式和工作方式。 设置设置TMODTMOD、T2MODT2MOD。2 2、设置定时器的计数初值、设置定时器的计数初值。 设置设置THxTHx和和TLxTLx,RCAP2HRCAP2H和和RCAP2LR

52、CAP2L。3 3、中断设置:、中断设置:设置设置IEIE。4 4、启动定时器、启动定时器。 设置设置TCONTCON或或T2CONT2CON。 可以使用位操作指令。例如:可以使用位操作指令。例如:SETB TRxSETB TRx。二、定时器二、定时器/ /计数器初值计算计数器初值计算 根据定时器根据定时器/ /计数器的模式和方式,计算计数初值计数器的模式和方式,计算计数初值(注意(注意T2T2)计数器的长度为计数器的长度为n n,则计数的最大值为,则计数的最大值为2 2n n 。1 1、工作于定时方式、工作于定时方式计数脉冲由内部的时钟提供,每个机器周期进行加计数脉冲由内部的时钟提供,每个机

53、器周期进行加1 1。设晶振频率为设晶振频率为foscfosc,则计数脉冲的频率为,则计数脉冲的频率为fosc/12fosc/12,计数脉,计数脉冲周期冲周期T=1/T=1/(fosc/12fosc/12)。)。如果进行定时时间为如果进行定时时间为t t,计数初值为,计数初值为X X,则:,则:t=t=( 2 2n n -X-X)12/fosc12/fosc2 2、工作于计数方式、工作于计数方式 当工作在计数方式时,对外部脉冲计数。利用计数器计当工作在计数方式时,对外部脉冲计数。利用计数器计数结束产生溢出的特性,来计算初值数结束产生溢出的特性,来计算初值X X 。则有:。则有:X= 2X= 2n

54、 n计数次数计数次数6.5.2 6.5.2 定时器的应用举例定时器的应用举例例例 利用定时器利用定时器T1T1的模式的模式2 2对外部信号进行计数,要求每计对外部信号进行计数,要求每计满满100100次,将次,将P1.0P1.0端取反。端取反。分析:分析:T1T1工作在计数方式。脉冲数工作在计数方式。脉冲数100100。模式模式2 2,模式字,模式字TMOD=0110TMOD=0110b b。1 1、初值计数:、初值计数:在模式在模式2 2下:下:X=X= 2 28 8- -100=156D=9CH100=156D=9CH2 2、C C语言程序:语言程序:#include #include s

55、bitsbit p1_0=p10; p1_0=p10;/进行位定义进行位定义void main ( )void main ( ) TMOD=0 x60;TMOD=0 x60;/T1/T1工作在模式工作在模式2 2,计数,计数TL1=0 x9c;TL1=0 x9c;/装入计数(重装)初值装入计数(重装)初值TH1=0 x9c;TH1=0 x9c;ET1=1;ET1=1;/允许定时器允许定时器1 1中断中断EA=1;EA=1;/开中断开中断TR1=1 ;TR1=1 ;/启动定时器启动定时器1 1while(1);while(1); void time0_int(void) interrupt 3

56、void time0_int(void) interrupt 3 /中断服务程序中断服务程序 P1_0=P1_0;P1_0=P1_0;/取反,产生方波取反,产生方波 3 3、汇编语言程序:、汇编语言程序:MAIN:MAIN: MOV TMOD, #60HMOV TMOD, #60H ;T1 ;T1工作在模式工作在模式2 2,计数,计数MOVMOV TL1, #9CH TL1, #9CH; ;装入计数初值装入计数初值MOVMOV TH1, #9CH TH1, #9CH; ;装入计数(重装)初值装入计数(重装)初值MOVMOV IE, #88H IE, #88H; ;允许定时器中断允许定时器中断S

57、ETB TR1SETB TR1; ;启动定时器启动定时器HERE: SJMP HEREHERE: SJMP HERE; ;等待中断等待中断中断服务程序中断服务程序:ORG 001BHORG 001BH; ;中断服务程序入口地址中断服务程序入口地址CPLCPL P1.0 P1.0; ;对对P1.0P1.0引脚信号取反引脚信号取反RETI ;RETI ;中断返回中断返回 例例 某一应用系统需要对某一应用系统需要对INT0INT0引脚的正脉冲测试其脉冲宽引脚的正脉冲测试其脉冲宽度。度。分析:分析:可以设置定时器可以设置定时器/ /计数器计数器0 0为定时方式,工作在模式为定时方式,工作在模式1 1,

58、且置位且置位GATEGATE位为位为1 1,将外部需测试的脉冲从,将外部需测试的脉冲从INT0INT0引脚输入,设机引脚输入,设机器周期为器周期为1 1s s。C C语言程序:语言程序:计算脉宽和处理程序略。计算脉宽和处理程序略。#include sbit P3_2=P32;unsigned int_test( )TMOD=0 x09;TL0=0 x00;TH0=0 x00;while(P3_2); TR0=1; while(!P3_2); while(P3_2);TR0= 0;return (TH0*256+TL0);汇编语言程序汇编语言程序:INT00:MOV TMOD,#09H MOV

59、TL0,#00H ;设置计数初值设置计数初值MOV TH0,#00HLOP1:JBP3.2,LOP1; ;等待等待P3.2P3.2变低电平变低电平SETB TR0 ; ;启动启动T0T0计数计数LOP2:JNBP3.2,LOP2; ;等待等待P3.2P3.2变成高电平变成高电平LOP3:JBP3.2,LOP3; ;等待等待P3.2P3.2变成低电平变成低电平 CLRTR0; ;停止停止T0T0计数计数MOV A,TL0; ;计数器计数器TL0TL0中的内容送中的内容送A A MOV B,TH0; ;计数器计数器TH0TH0中的内容送中的内容送B B例例 某应用系统要求通过某应用系统要求通过P1

60、.0P1.0和和P1.1P1.1口分别输出脉冲周期口分别输出脉冲周期为为200200s s和和400400s s的方波,的方波,foscfosc=6MHz=6MHz。 分析:分析:需要两个定时器需要两个定时器。可以选择使用定时器。可以选择使用定时器/ /计数器计数器0 0,设置为定时模式,设置为定时模式,工作模式工作模式3 3,分成两个,分成两个8 8位的定时器。位的定时器。1 1、计算定时初值。、计算定时初值。t=t=(256 -X256 -X)12/fosc12/fosc初值分别为初值分别为0CEH0CEH和和9CH9CH。2 2、C C语言程序:语言程序:# include # incl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论