您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > 第六章-定时器及应用
第6章MCS-51的定时器/计数器主要内容1、定时器概述2、定时器的控制3、定时器的四种工作模式及应用6.1定时器概述MCS-51单片机内有两个16位定时器/计数器,常称为定时器0和定时器1,简称为T0和T1;均可作定时器和计数器,为加1计数器;用于定时控制、延时、外部计数和检测等。其结构如下图所示。图6-1MCS-51定时器/计数器结构框图作为定时器:通过计数实现定时。计数脉冲来自单片机内部,一个机器周期计数器加1,直至计满溢出。如晶振为12MHz的单片机,一个机器周期为1μS,其计数频率为振荡频率的1/12。作为计数器:对外来脉冲计数。计数频率最高为振荡频率的1/24,每两个机器周期计数器加1。在S5P2对计数输入引脚T0、T1进行采样,下降沿计数(S3P1期间)。说明:定时器/计数器在工作期间不占用CPU的时间。6.2定时器/计数器的控制单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置工作方式;TCON用于控制启动和中断申请。6.2.1工作方式控制寄存器TMOD工作方式控制寄存器TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式,不能进行位寻址。格式如下:TMOD的低4位用于T0,高4位用于T1。(1)GATE——门控位GATE=0用软件使TCON中的TR0或TR1为1,启动定时/计数器工作运行。GATE=1用软件使TR0或TR1为1,同时外部中断引脚高电平来启动定时器/计数器运行。(2)——计数器模式和定时器模式选择位0:定时器模式;1:计数器模式。C/T(3)M1M0:工作方式选择位。定时/计数器有四种工作方式,由M1M0进行设置。6.2.2定时器/计数器控制寄存器TCONTCON的地址及格式如下,可按位寻址。低4位与外部中断有关。高4位的功能如下:(1)TF1、TF0——计数溢出标志位(2)TR1、TR0——计数运行控制位1:启动定时器/计数器工作0:停止定时器/计数器工作该位由软件置1或清0。6.3定时器的四种工作方式定时器的四种工作方式为:方式0、方式1、方式2、方式3,由工作方式寄存器TMOD确定。主要讨论各种工作方式的工作原理、特点和应用。6.3.1方式0及其应用一、方式0时的结构和工作原理方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。M1、M0为00,定时器/计数器的框图:一、特点1、可定时(C/T=0)、可计数(C/T=1);2、13位方式(TL0、1的低5位和TH0、1的8位);3、INT0、INT1是定时器/计数器0、1的外部门,GATE=1允许使用外部门(TR0、1应置1),此时用外部门控制运行GATE=0禁止外部门,此时用TR0、1控制运行;4、计数值N和定时时间t的计算:N=213-初值Xt=(213-初值X)*振荡周期*12=(213-初值X)*机器周期Tcy最大计数值为:213=8192二、应用举例例6-1设定时器T0选择工作方式0,定时时间为1ms,ƒosc=6MHz。试确定T0初值,计算最大定时时间T。解:(1)求T0的初值X由公式:t=(213-T0初值)*机器周期Tcyt=1ms=1000μs机器周期Tcy=12/ƒosc=12/6000000s=2μs得1000=(213-X)*2所以初值X=8192-500=7692=1111000001100BT0的低5位:01100B=0CHT0的高8位:11110000B=F0H(2)最大定时时间T当T0的初值=0时为最大定时时间T=(213-0)*2=8192*2μs=16384μs=16.384ms例6-2设T0以方式0定时,定时时间为1ms,ƒosc=6MHz,编程实现其定时功能。解:(1)计算初值(同上,略)F0HTH0,0CHTL0(2)程序清单ORG0000HRESET:AJMPMAINORG000BHAJMPIT0P;主程序ORG0100HMAIN:MOVSP,#5FHMOVTMOD,#0MOVTL0,#0CHMOVTH0,#0F0HSETBTR0SETBET0SETBEASJMP$;中断服务程序ORG0120HIT0P:MOVTL0,#0CHMOVTH0,#0F0HCPLP1.0RETI例6-3利用T0的工作方式0产生1ms的定时,编程实现在P1.0引脚上输出周期为2ms的方波。设单片机的晶振频率ƒosc=12MHz。解:方法:定时1ms,对P1.0取反,然后继续定时(1)设置方式字TMOD=****0000B=00000000B=00H(2)计算初值由公式:t=(213-T0初值)*机器周期t=1ms=1000μs,机器周期Tcy=12/ƒosc=12/12000000s=1μs得1000=(213-X)*1=(8192-X)*1所以初值X=7192=1110000011000BT0的低5位:11000B=18HT0的高8位:11100000B=E0H1ms2ms(3)程序清单方法一:中断方式ORG0000HRESET:LJMPMAINORG000BHLJMPCTC0;主程序ORG0030HMAIN:MOVSP,#5FHMOVTMOD,#0MOVTL0,#18HMOVTH0,#0E0HSETBEASETBET0SETBTR0SJMP$;中断服务程序ORG0100HCTC0:MOVTL0,#18HMOVTH0,#0E0HCPLP1.0RETI方法二:查询方式ORG0000HSTART:MOVSP,#5FHMOVTMOD,#0MOVTL0,#18HMOVTH0,#0E0HSETBTR0LOOP:JBCTF0,NEXTSJMPLOOPNEXT:MOVTL0,#18HMOVTH0,#0E0HCPLP1.0SJMPLOOP可替换为:LOOP:JNBTF0,$CLRTF0MOVTL0,#18H:6.3.2方式1及其应用一、方式1时的结构和工作原理方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。M1、M0=01特点1、可定时(C/T=0)、可计数(C/T=1);2、16位方式(TL0、1为低8位,TH0、1为高8位);3、INT0、INT1是定时器/计数器0、1的外部门,GATE=1允许使用外部门(TR0、1应置1),此时用外部门控制运行GATE=0禁止外部门,此时用TR0、1控制运行;4、计数值N和定时时间t的计算:N=216-初值Xt=(216-初值X)*机器周期Tcy最大计数值为:216=65536例6-4用定时器T1产生一个50Hz的方波,由P1.1输出。使用程序查询方式,设ƒosc=12MHz。解:(1)计算初值方波周期T为:T=1/50s=0.02s=20ms定时时间为:t=T/2=10ms=10000μs由公式:t=(216-X)*机器周期Tcy因Tcy=1μs,得10000=(216-X)*1,10000=65536-XX=55536=D8F0H(2)方式字TMODTMOD=0001****B=10H(3)源程序ORG0000HMOVTMOD,#10HSETBTR1LP:MOVTH1,#0D8HMOVTL1,#0F0HJNBTF1,$CLRTF1CPLP1.1SJMPLP6.3.3方式2及其应用一、方式2的结构和工作原理方式2为自动重装初值的8位定时器/计数器。M1、M0=01一、特点1、可定时(C/T=0)、可计数(C/T=1);2、8位自动装入方式(TL0和TH0装入相同数);3、INT0、INT1是定时器/计数器0、1的外部门,GATE=1允许使用外部门(TR0、1应置1),此时用外部门控制运行GATE=0禁止外部门,此时用TR0、1控制运行;4、计数值N和定时时间t的计算:N=28-初值Xt=(28-初值X)*机器周期Tcy最大计数值为:28=256工作方式2特别适合于用作较精确的脉冲信号发生器。例6-5当P3.4(T0)引脚上输入的电平发生负跳变时,从P1.0输出一个500μs的同步脉冲,请编程实现该功能。设ƒosc=6MHz。解题思路:先令T0以方式2计数,其初值设为FFH,当P3.4引脚上输入的电平发生负跳变时,计数器加1使溢出标志置1;然后令T0以方式2定时,使P1.0输出一个500μs的同步负脉冲。解:1、T0以方式2计数(1)计数初值X=0FFH(2)方式字TMOD=****0110B=06H2、T0以方式2定时(1)定时初值X计算t=500μs,Tcy=2μs由公式:t=(28-X)*机器周期Tcy得500=(256-X)*2X=6(2)方式字TMOD=****0010B=02H3、程序清单:ORG0000HSTART:MOVTMOD,#6;T0以方式2计数MOVTH0,#0FFHMOVTL0,#0FFHSETBTR0JNBTF0,$CLRTF0CLRTR0MOVTMOD,#2;T0以方式2定时MOVTH0,#6MOVTL0,#6CLRP1.0SETBTR0JNBTF0,$SETBP1.0CLRTF0CLRTR0SJMPSTART例6-6利用定时器T1的方式2对外部信号计数,要求每计满100次对P1.0端取反。解:(1)计算计数初值X100=28-XX=256-100=156=9CH(2)方式字TMOD=0110****B=60H(3)程序清单;用中断方式ORG0000HMAIN:MOVTMOD,#60HMOVTL1,#156MOVTH1,#156MOVIE,#88HSETBTR1SJMP$;中断服务程序ORG001BHCPLP1.0RETI6.3.4方式3及其应用一、方式3时的结构和工作原理方式3只适用于定时/计数器T0,定时器/计数器T1处于方式3时相当于TR1=0,停止计数。工作方式3将T0分成为两个独立的8位计数器TL0和TH0。二、特点1.工作方式3下的T0T0分为两个独立的8位计数器:TL0和TH0。TL0使用T0的状态控制位、GATE、TR0、INT0,而TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。C/TTL0作8位定时器/计数器TH0作8位定时器2.T0工作在方式3下T1的各种工作方式当T1用作串行口的波特率发生器时,T0才工作在方式3。T0处于方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。(1)T1工作在方式0(2)T1工作在方式1(3)T1工作在方式28例6-7设某单片机系统中已经使用了两个外部中断源,并置定时器T1为方式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。ƒosc=12MHz。解:1、确定定时器的工作方式将T0设置为方式3计数,T0的引脚接外部中断源,TL0的计数初值设为FFH,下降沿产生中断;T0的TH0为8位定时器,可产生方波,用中断方式;T1设为方式2定时,作串行口的波特率发生器。2、计算各个初值(1)TL0的初值为0FFH(2)TH0的初值产生5kHz的方波的周期为:T=1/5000s=0.2ms=200μs因此TH0的定时时间为:t=T/2=100μs,Tcy=1μs得100=(256-X)*TcyX=256-100=156TH1=TL1,由波特率值确定3、TMOD值:00100111B=27HTCON值:01010101B=55H4、程序清单:(1)中断入口部分:ORG0000HSTART:LJMPMAINORG0003HLJMPE0INTORG000BHLJMPTL0INTORG0013HLJMPE1INTORG001BHLJMPTH0INT(2)主程序部分:MAIN:MOVSP,#5FHMOVTMOD,#27HMOVTL0,#0FFHMOVTH0,#156MOVTH1,#dataMOVTL1,#dataMOVIE,#9FH;开中断:(3)中断处理程序部分
本文标题:第六章-定时器及应用
链接地址:https://www.777doc.com/doc-4376812 .html