单片机原理与应用 第5章 定时器计数器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单片机原理与应用北京交通大学电子信息工程学院自动化系2017年1月北京交通大学2第5章定时器/计数器本章主要内容定时/计数器的功能与定时/计数器有关的寄存器定时/计数器四种工作方式定时器的应用北京交通大学3本章要求:熟练掌握计数/定时编程方法定时方法软件定时硬件定时可编程定时器定时北京交通大学4TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M0TCONTMODTH1TL1TH0TL0CPU一、定时/计数器的功能图1定时/计数器与TMOD、TCON的结构框图共有两个可编程的定时/计数器T0和T1都是十六位加法计数器结构,分别由TH0、TL0和TH1、TL1四个8位计数器组成每个定时/计数器都具有定时和计数两种功能北京交通大学5图2定时/计数器的结构框北京交通大学6功能:对外来脉冲进行计数外来计数脉冲加在单片机的两个信号引脚T0(P3.4)T1(P3.5)外部输入的脉冲在负跳变时触发计数计数器在每个机器周期的S5P2期间采样外部输入信号。若一个周期采样值为1,下一个周期采样值为0,则计数器加1。脉冲的频率最高为振荡频率的1/24外部输入信号的高电平和低电平保持时间大于一个机器周期计数器计满回零,发中断申请1.计数功能北京交通大学72.定时功能计数器的计数来实现计数脉冲:每个机器周期产生一个计数脉冲。即计数频率为振荡频率的1/12。根据计数器的预置值计算出定时时间。按定时时间的要求,计算出计数器的预置值。北京交通大学8二、定时/计数器的方式和控制寄存器1.定时器控制寄存器(TCON)控制方式:外部中断控制与定时控制。定时控制功能:定时器在溢出时,设定标志位(TFx)控制定时器的运行或停止等(TRx)北京交通大学9定时控制寄存器(TCON)(88H)TF1TR1TF0TR0IE1IT1IE0IT08F8E8D8C8B8A8988INT0触发方式0:电平触发(低)1:边沿触发(下跳沿)INT0请求标志0:无请求(硬件置位或清除)1:有请求INT1触发请求标志用于定时/计数器位地址外部中断北京交通大学10TF0(TF1):为T0(T1)定时器溢出中断标志位当T0(T1)计数溢出时,由硬件置位,并在允许中断的情况下,发出中断请求信号。当CPU响应中断转向中断服务程序(000BH,001BH)时,由硬件自动将该位清0。TR0(TR1):为T0(T1)运行控制位当TR0(TR1)=1时启动T0(T1);TR0(TR1)=0时关闭T0(T1)该位由软件进行设置。复位时TCON清零北京交通大学112.定时器方式寄存器(TMOD)用于控制两个定时/计数器的工作方式高4位定义T1,低4位定义T0,字节地址为89H格式:GATEC/TM1M0GATEC/TM1M0T0T1GATE:门控位GATE=0,以运行控制位TRx启动定时器GATE=1,启动信号=TRx·INTx在没有外中断请求信号(INTx=1)才允许定时器启动北京交通大学12C/T:定时或计数方式选择位:C/T=0,定时工作方式;C/T=1,计数工作方式。M1M0:工作方式选择位:•M1M0=00方式0:13位计数(TL0-4、TH0-7)•M1M0=01方式1:16位计数•M1M0=10方式2:8位计数自动装入计数器初值功能•M1M0=11方式3:T0分为两个8位计数器TL0允许作为定时或计数方式TH0只能作为定时方式北京交通大学13三、定时/计数器工作方式1.方式0方式0工作逻辑结构图。12分频foscC/T=0C/T=1TL1TH1(5位)(8位)TF1中断T1控制GATEINT1+TR11软件启动方式1/24fosc1/12fosc计数输入中断TF1ET1EA北京交通大学14方式0是13位结构的工作方式,其计数器由TH1的全8位和TL1的低5位构成。TL1的高3位弃之不用。计数方式:计数值的范围为:1-8192(213)定时方式:定时时间T的计算公式为:启动的条件是:(TRx=1)AND(GATE=1ORINTx=1)2000HT=(213-计数初值x)晶振周期12或T=(213-计数初值x)机器周期机器周期=12/晶振频率=12*晶振周期北京交通大学15方式0应用举例设单片机晶振频率fosc=6MHz,使用定时器1以方式0产生周期为500us的方波,并由P1.0输出。以查询或中断方式完成。解:·计算定时初值x欲产生500us的方波,在P1.0端以250us为周期交替输出高低电平即可实现。为此,定时时间应为250us。晶振为6MHz,则1个机器周期为(12/6)2us。则:(213-x)*2uS=250uSx=8067=1111110000011B(2000H-7DH)即:TH1=0FCH,TL1=03H。北京交通大学16步骤:1.TMOD初始化,工作方式选择2.计数器初值计算3.置位EA使CPU开中断4.置位ETx允许C/T中断5.置位TRx启动计数北京交通大学17·TMOD初始化定时器1,M1M0=00H(方式0)C/T=0(定时)GATE=0(以软件启动定时器)不用的位设定为0TMOD为初始化00H。·TCON寄存器的TR1位来启动(=1)或停止(=0)定时器北京交通大学18程序设计查询方式:MOVTMOD,#00H;T1工作在方式0SETBTR1;启动T1工作LOOP:MOVTL1,#03HMOVTH1,#0FCH;置定时初值WAIT:JNBTF1,WAIT;定时未到,循环等待CLRTF1;定时到,清TF1CPLP1.0;由P1.0输出,信号取反SJMPLOOP;循环输出方波北京交通大学19中断方式:ORG8000HMOVTMOD,#00H;T1工作在方式0MOVTL1,#03HMOVTH1,#0FCH;置定时初值SETBEA;开中断SETBET1;允许T1中断LOOP:SETBTR1;启动T1工作WAIT:SJMPWAIT;等待中断AJMPLOOPORG001BH;T1中断入口LJMPSUB;跳至中断服务程序SUBORG8100H;中断服务程序SUB1:CPLP1.0;输出信号取反MOVTL1,#03HMOVTH1,#0FCH;重置定时初值RETI;中断返回北京交通大学202.方式1其逻辑电路和工作情况与方式0完全相同。所不同的只是组成计数器的位数为16位。计数值的范围为:1-65536(216)定时时间的计算公式与方式0类似。即:TL1TH1TF1计数输入7070T=(216-计数初值x)晶振周期12或T=(216-计数初值x)机器周期北京交通大学2112分频foscC/T=0C/T=1TL0(8位)TF0TR0控制GATEINT0+TR0TH0(8位)重装入中断3.方式2工作方式2逻辑结构如图。北京交通大学22该方式把16位计数器分为两部分既以TL1作计数器以TH1作预置计数器初始化计数初值分别装入TL1和TH1中•当计数溢出后,由预置寄存器TH1,•以硬件方法自动给计数器TL1重新加载•最大计数值只能到256,适用于循环定时或循环计数应用方式2具有自动重新加载功能,即自动加载计数初值北京交通大学23方式2应用举例•设单片机晶振频率fosc=6MHz,使用T0以方式2产生周期为200us的方波,并由P1.0输出。•以查询或中断方式完成解:·计算计数初值x晶振为6MHz,则1个机器周期为2us。则:(28-x)2=100,x=206=CEH即TH0=0CEH,TL0=0CEH。TMOD寄存器初始化•定时器0•M1M0=10H(方式2)•C/T=0(定时)•GATE=0•(以软件启动定时器)•不用的位设定为0•最后得TMOD应初始化为02H。北京交通大学24北京交通大学25·用TCON寄存器的TR0位来启动(=1)或停止(=0)定时器。程序设计(查询方式):MOVTMOD,#02H;T0工作在方式2MOVTL0,#0CEHMOVTH0,#0CEH;置定时初值SETBTR0;启动T0工作WAIT:JNBTF0,WAIT;定时未到,循环等待CLRTF0;定时到,清TF0CPLP1.0;由P1.0输出,信号取反SJMPWAIT;循环输出方波北京交通大学26中断方式:MOVTMOD,#02H;T0工作在方式2MOVTL0,#0CEHMOVTH0,#0CEH;置计数初值SETBEA;开中断SETBET0;允许T0中断LOOP:SETBTR0;启动T0工作WAIT:SJMP$;等待中断CLRTF0;计数溢出标志位TF0清0AJMPLOOPORG000BH;中断服务程序CPLP1.0;由P1.0输出,信号取反RETI;中断返回北京交通大学27TH0(8位)TF1T0控制GATEINT0+TR0C/T=0C/T=11/12fosc1/12foscTR1中断TL0(8位)TF0控制中断4.方式3计数/定时定时北京交通大学28工作在方式3下的T0T0被拆成两个独立的8位计数器。1.TL0既可以作计数器使用,又可以作定时器使用,其功能和操作方式与方式0或方式1完全相同。2.TH0只能作8位定时器使用,并占用了T1的中断资源TR1和TF1。北京交通大学29工作在方式3下的T1如果T0已工作在方式3下:T1只能工作在方式0-2下,用于任何不需要中断控制的场合用作串行口的波特率发生器通常只有当T1用作串行口的波特率发生器时:T0才被定义为方式3,以增加一个8位计数器。T1设定工作方式2、计数器初值,T1便可自动运如停止计数:只需送入一个把它设为方式3的控制字即可,这时T1直接把溢出标志TF1送给串行口北京交通大学30四、定时器的应用定时器门控位GATE的应用:当GATE=1时,定时器的启动受外部INTx的控制。在TRx=1时,若INTx=1,则启动计数;若INTx=0,则停止计数。应用:测试外部脉冲的宽度。北京交通大学3112分频foscC/T=0C/T=1TL1TH1(8位)(8位)TF1中断T1控制GATEINT1+TR11软件启动方式1/24fosc1/12fosc计数输入中断TF1ET1EA例:设被测脉冲由P3.3输入,利用T1测试正脉冲的宽度。设fosc=12MHz,将测试结果存放在内部RAM的40H,41H单元中。北京交通大学32四、定时器的应用分析:测试时,1.检测INT1端由低变高时,TR1=1启动计数;P3.3(INT1)置TR1=1启动计数停止计数2.INT1再次变低时,计数停止,此时的计数值即为被测正脉冲的宽度。3.由于T1工作于方式1,所以可测最大脉宽为65536uS(fosc=12MHz);4.由于外部脉宽的最高频率为fosc/24,所以,测试值的合理范围是2-65536x2。北京交通大学33四、定时器的应用ORG300HSTART:MOVTMOD,#90H;GATE=1,T1方式1MOVTL1,#00H;从零开始计数MOVTH1,#00HMOVR0,#40H;置数据指针DONE:JNBP3.3,DONE;等INT1变高SETBTR1;启动计数DONE1:JBP3.3,DONE1;等INT1变低北京交通大学34四、定时器的应用CLRTR1;停止计数MOVA,TH1;存结果MOV@R0,AINCR0MOVA,TL1;MOV@R0,AEND北京交通大学35练习题编程实现利用定时器T1产生一个50Hz的方波,由P1.3输出,设晶体振荡器频率为12MHz。北京交通大学36作业P118:2,9北京交通大学37ORG8000HSTART:MOVTMOD,#09H;GATE=1,方式1,定时MOVTL0,#00HMOVTH0,#00HWAIT1:JBP3.2,WAIT1SETBTR0WAIT2:JNBP3.2,WAIT2WAIT3:JBP3.2,WAIT3CLRTR0MOVR0,TL0MOVR1,TH0SJMP$习题:1.利用T0门控GATE测量INT0引脚出现的脉冲宽度脉宽=计数值X机器周期设T0方式1,GATE=1,TR0=1,计数初值=00HINT0(P3

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功