第七章 定时器计数器

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

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

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

资源描述

在测控技术中,往往需要定时检测某个参数,或按一定的时间间隔来进行某种控制。还有一些控制是按对某种事件的计数结果进行的。因此几乎所有单片机内部都设置了定时/计数器,以简化微机测控系统的设计。MCS-51系列单片机典型产品8051等有两个16位定时器/计数器T0,T1;8052等单片机有三个16位定时器/计数器T0、T1和T2。它们都可以用作定时器或外部事件计数器。7.451内部定时/计数器及其应用7.451内部定时/计数器及其应用2定时与计数的概念定时的主要作用是产生各种时标间隔。软件延时硬件定时器计数:记录(外部)事件的数量。例如:温度测量定时/计数器的实质3定时/计数器的实质就是计数器,一般都具有定时兼计数的功能,具体是定时还是计数主要看计数对象(即计数脉冲)。若计数脉冲为已知固定周期的信号,则计数器就可以看作定时器;若计数脉冲为周期不固定的或未知的信号,则计数器只能看作是计数器。通过外部引脚对外部事件计数通过对机器周期进行计数实现定时MCS-51单片机内部定时/计数器一、内部定时/计数器结构和工作原理451单片机内部有两个可编程16位加1的定时器/计数器,具有两种工作模式(计数器模式、定时器模式)和四种工作方式(方式0、方式1、方式2、方式3),其控制字均在相应的特殊功能寄存器(SFR)中,通过对它的SFR的编程,可以方便的选择工作模数和工作方式。1、定时/计数器的结构GATEC/TM1M0GATEC/TM1M0TH1TL1TH0TL0T1方式T0方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON外部中断相关位TF1TR1TF0TR05定时器/计数器是一个加1计数器,当计数溢出时产生中断申请表示定时到或计数到。•每输入一个脉冲,计数器加1,当加到计数器各位都为1时,再输入一个脉冲,计数器各位全变为0,溢出,中断标志置1(SFR中TCON的TF0、TF1),从而向CPU申请中断。由预置计数值就可以算出从加1计数器启动到计满溢出所需的时间,即定时时间。•8位-256;13位-8192;16位-65536计数原理对外部脉冲计数时,当脉冲有一个高电平到低电平“1”-“0”跳变时,计数器加1,且在每个机器周期的S5P2采样外部输入,若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。由于识别一个从1到0的负跳变信号需要两个机器周期(24个振荡周期),所以最高的计数频率为系统时钟频率的1/24;两个输入脉冲的最小间隔应不小于两个机器周期。又因为一个机器周期对信号采样一次,因此输入信号的电平宽度至少应持续一个机器周期。定时原理•输入脉冲不是外部脉冲源,而是一个晶体振荡器的脉冲源。•输入脉冲是由内部振荡器的输出经12分频送来,所以定时器可看做对机器周期的计数。•晶振12MHz,机器周期1us,定时器每接收一个脉冲是1us•晶振6MHz,机器周期2us,定时器每接收一个脉冲是1us加法计数器的初值可以由程序设定,设置的初值不同,计数值或定时时间就不同。定时时间不仅与计数初值有关,而且与系统时钟频率有关。•对于16位计数器,最大定时时间是216个脉冲的时间。则定时时间△T=(216-X)*T•T:输入脉冲周期,T=12/fµs(f为晶振频率1.2~12MHz)如为12MHz,则T=1µs•X:计数器初值(由程序输入)•对于12MHz晶体,T=1µs,最大定时△T=65.536ms;对于6MHz晶体,T=2µs,最大定时△T=131ms•常使用:X=216-△T/T例:系统时钟频率为12MHz,要产生1ms定时,求初值XT=12/12=1µs若为16位计数器X=216-1000/1=64536=0FC18H若为13位计数器X=213-1000/1=8192-1000=7192=1C18H•不能采用8位计数器二、T/C的特殊功能寄存器SFR111、16位定时/计数器0:核心的计数单元由两个特殊功能寄存器TH0和TL0组成2、16位定时/计数器1:核心的计数单元由两个特殊功能寄存器TH1和TL1组成3、定时器方式选择寄存器:TMOD4、定时器控制寄存器:TCONT/C的特殊功能寄存器SFR123、定时器方式选择寄存器:TMODM1M0方式说明00013位定时器(TH的8位和TL的低5位)01116位定时器/计数器102自动重装入初值的8位计数器113T0分成两个独立的8位计数器,T1在方式3时停止工作13地址:89H定时器方式选择寄存器:TMOD14GATE——门控位。GATE=0启动不受/INT0或/INT1的控制;GATE=1启动受/INT0或/INT1的控制。C//T——外部计数器/内部定时器方式选择位C//T=0定时方式;C//T=1计数方式。4、定时器控制寄存器:TCON15TF1TR1TF0TR0IE1IT1IE0IT0TCON(88H)外部中断有关1、TF1:定时器/计数器T1溢出中断请求标志位。当启动T1计数后,T1从初值开始加1计数,计数器最高位产生溢出时,由硬件使TF1置1,并向CPU发出中断请求。当CPU响应中断时,硬件将自动对TF1清0。2、TF0:定时器/计数器T0溢出中断请求标志位。含义与TF1类同。定时器控制寄存器:TCON16TF1TR1TF0TR0IE1IT1IE0IT0TCON(88H)外部中断有关TR1:T1运行控制位。TR1=1时,T1开始工作;TR1清0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。TR0:T0运行控制位。三、四种工作方式17除了方式3,T0和T1有完全相同的工作方式。1、方式018T/C0方式0(13位计数器)的逻辑结构图低5位高8位方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。P3.4方式019定时计数模式选择低5位高8位启动控制分析GATE:门控位GATE=0时,定时计数器的启停,仅仅由TR0控制,只要TR0=1就启动。GATE=1时,定时计数器的启停,还将受到INT0引脚的控制。在TR0=1的前提下int0引脚=1计数,=0停止计数。TR0=0停止计数。计数初值问题13X=2-N20初值重装问题:用程序将0~8191的某一数送入TH0、TL0作为初值,TH0、TL0从初值开始加法计数,直至溢出。所以初值不同,定时时间或计数值不同。必须注意的是:加法计数器TH0溢出后,必须用程序重新对TH0、TL0设置初值,否则下一次TH0、TL0将从0开始计数。初值计算问题:加法计数器。例如:计数1000个。213-1000=7192=1110000011000BE0送TH18H送TLMOVTH0,#0E0HMOVTL0,#18H•此种方式与MCS-48系列兼容,如果不是为了兼容的目的,一般不用方式0.•方式0的全部功能,方式1都可以代替。•如果要重复定时或计数,则须重新设置时间常数初值注意:2、方式122T/C0方式1(16位计数器)的逻辑结构图与方式0相似,方式1时的计数长度是2的16次方。16位的初值直接拆成高低字节,分别送入TH和TL即可。初值的计算公式??方式13、方式2(计数初值自动再装入)23工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。工作方式2就针对这个问题而设置,它具有自动重装载功能,即计数初值自动再装入。3、方式224方式2(计数初值自动再装入)结构图计数初值自动再装入的实现25在工作方式2中,16位计数器分为两部分,即以TL0为计数器,以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给计数器TL0重新加载。与方式0和方式1不同处:•只使用TL0做8位计数器,最大计数值255;•最大定时时间(晶振12MHz时):256s•用于需要重复定时和计数的场合。方式2用于定时工作方式,定时时间由下式确定:t=N×Tcy=(256-X)×Tcy计数初值X:X==256-t/Tcy4、方式327方式3(两个8位独立计数器)结构图只能定时不能计数。既可以定时也可以计数方式3(两个8位独立计数器)28(2)TH0占用了T1的控制位TR1、和中断标志位TF1,同时占用了T1的中断资源,此时,TH0固定为一个8位计数器,启动受TR1控制,只能定时不能计数。说明:(1)T0在方式3时,TL0使用T0的控制位C/T、GATE、TR0、INT0,既可以定时也可以计数。(3)T0工作在方式3时,T1可以工作在方式0、1、2。(4)T0工作在方式3时,占用了TR1、TF1;T1只受C/T位控制,计数满时也没有溢出中断请求,只能将输出送到串行口。所以此时T1可以作串行口波特率发生器,如果需要T1停止计数,只需设置T1为方式3即可。T0工作在方式3时,T1工作在方式2的逻辑图29四、应用30定时/计数器的应用(1)选择定时/计数器——T0、T1选择其一,(2)定时或外计数选择——C//T及GATE,(3)工作方式——M1、M0(4)计数初值——加1计数、位数(5)计数初值的再装入1)写TMOD;2)确定IE、IP;3)写计数初值;4)启动计数(TRi)编制初始化程序:中断相关寄存器31中断允许控制寄存器IEEA--ESET1EX1ET0EX0IE(A8H)AFHAEHADHACHABHAAHA9HA8H51单片机有两个中断优先级。高优先级或低优先级中断。中断优先级寄存器IPPSPT1PX1PT0PX0IP(B8H)BCHBBHBAHB9HB8H设计一个能产生t=1ms的周期信号发生器,试编程.32解:选T0方式0;C//T=0,GATE=0;12MHz时钟,T=1usN=0.5ms/T=0.5ms/1us=500初值=213-500=8192-500=7692=1E0CH=0001111000001100B,1E0CH01100TL011110000TH0F0H0CH33LJMPMAINORG000BHLJMPTim0ORG1000HMAIN:MOVSP,#60HMOVTL0,#0CHMOVTH0,#0F0HMOVTMOD,#00HSETBTR0SETBET0SETBEASJMP$………ORG0000HTim0:MOVTL0,#0CHMOVTH0,#0F0HCPLP1.0RETI设计一个能产生t=1ms的周期信号发生器,试编程.200ms的方波??34LJMPMAINORG000BHLJMPINSE0ORG1000HMAIN:MOVSP,#60HMOVTL0,#0CHMOVTH0,#0F0HMOVTMOD,#00HSETBTR0SETBET0SETBEASJMP$MOVR2,#200………ORG0000HINSE0:DJNZR2,NextCPLP1.0MOVR2,#200Next:MOVTL0,#0CHMOVTH0,#0F0HRETI设计一个能产生t=200ms的周期信号发生器,试编程.200ms的方波:软件计数当实际应用系统中应用系统的2个外部中断源已被占用,现要求增加1个外部中断源,而片内定时器/计数器没有使用时,可利用定时器/计数器扩展外部中断源,方法如下:将定时器/计数器设置为计数模式,计数初值设定为满值,将待扩展的外部中断源接到定时器/计数器。当从该引脚输入一个下降沿信号,计数器加1后产生定时器/计数器溢出中断。因此定时器/计数器可作为扩展中断源的中断输入端。例:利用定时器/计数器T0扩展一个外部中断源,T0设置为方式2(自动重装初值方式)外部计数工作模式,TH0、TH1初值均为0FFH,初始化程序如下:INIT_T0:MOVTMOD,#06H;T0计数方式2MOVTH0,#0FFH;MOVTH0,#0FFH;SETBET0;T0开中断;SETBE

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

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

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

×
保存成功