您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 单片机原理及应用课件(陈林林)第5章--定时计数器原理及其应用1-rev1
第5章定时/计数器原理及其应用5.1定时/计数器基本原理•单片机内部集成了两个16位定时/计数器,分别称为定时/计数器0(T0)和定时/计数器1(T1),•两个定时/计数器的结构一样,通过TMOD的设置,都可有4种工作方式,除方式3外,其他3种工作方式的工作原理一样。•定时/计数器的核心部件是一个16位的加1计数器•两个定时/计数器的加1计数器共由2组、4个特殊功能计数器构成,它们分别是:TH0:T0加1计数器的高8位TL0:T0加1计数器的低8位TH1:T1加1计数器的高8位TL1:T1加1计数器的低8位•对定时/计数器启动后,加1计数器可自动对规定脉冲源的脉冲数进行计数,TLX计数满后自动向相应的THX进位,当THX也计数满后,将置位TCON特殊功能寄存器中的TFX位,供程序查询或向CPU发出中断请求。•定时/计数器THX和TLX均可按字节读写,对其写入特定的数值,可控制从开始计数到计数溢出置位TFX所需计数的脉冲个数;而对其读出,则可了解从启动定时器到现在所计的脉冲个数。“规定脉冲源”•定时/计数器能够计数的“规定脉冲源”有两个:一个是内部振荡源12分频后形成的脉冲,即对机器周期进行计数;另一个是对从T0(或T1)引脚引入的外部脉冲计数,这种情况下,计数器在每个机器周期的S5P2节拍期间采样外部输入信号,若一个周期采样值为“1”,下一个周期的采样值为“0”,则计数器加1,所以,对外部信号的最高计数率是振荡频率的1/24,且要求外部输入信号的高、低电平时间均需保持一个机器周期以上。周期信号关系图•由于单片机振荡频率是已知的,因此对内部振荡源12分频后形成的脉冲进行计数时,即可完成定时。•实现定时的具体作法是,向THX、TLX写入特定的基数,可预先确定从定时/计数器开始运行到THX、TLX溢出所需的时间,一旦TFX置位,则经历了预期的时间,从而完成定时。加1计数器的工作原理GATEC/TM1M0GATEC/TM1M0TH1TL1TH0TL0T1方式T0方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON外部中断相关位TF1TR1TF0TR0定时/计数器内部结构示意图1.定时器工作方式寄存器TMOD•TMOD用于控制T0和T1的工作方式,字节地址89H,•高半字节定义T1的工作方式;低半字节定义T0的工作方式,•TMOD不能位寻址,复位后,所有位均为零。各位定义如下:GATEC/TM1M0GATEC/TM1M0定时/计数器1定时/计数器0D7D6D5D4D3D2D1D0TMOD1)M1、M0:工作方式选择位M1M0工作方式说明00方式013位定时/计数器01方式116位定时/计数器10方式2自动重装入8位定时/计数器11方式3T0:拆分为两个8位定时/计数器T1:工作于方式2或停止工作2)C/T:定时/计数功能选择位C/T=0为定时模式;C/T=1为计数模式3)GATE:门控位•GATE=0时,只要用软件置TCON中的TR0或TR1为1,就可以启动相应的定时/计数器;•GATA=1时,软件启动TR0或TR1后,外部中断引脚/INT0或/INT1也必须同时为高电平,才能启动定时/计数器T0或T1工作•GATA=1时,可测量/INT0或/INT1引脚高电平的宽度2.定时器控制寄存器TCON•TCON用于控制定时/计数器的启动、停止,并寄存定时器的溢出状态•另有4位与中断系统有关•TCON字节地址位88H,可位寻址。各位定义如下:TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0TCON8FH8EH8DH8CH8BH8AH89H88H位地址1)TF1:定时/计数器1溢出中断请求标志2)TR1:定时/计数器1运行控制位3)TF0:定时/计数器0溢出中断请求标志4)TR0:定时/计数器0运行控制位GATEC/TM1M0GATEC/TM1M0TH1TL1TH0TL0T1方式T0方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON外部中断相关位TF1TR1TF0TR0定时/计数器内部结构示意图5.2定时/计数器工作方式•两个定时/计数器工作方式0~方式2的原理完全相同,只是有关的加1计数器(THX、TLX)及TMOD、TCON中对应的控制、标识位不同;对应的外部输入引脚不同。1.工作方式0•13位计数模式:由TL1的低5位(高3位未用)和TH1的8位组成加1计数器。•TL1的低5位溢出时向TH1进位,TH1溢出时,置位TCON中相应的TF1标志,向CPU发出中断请求或供程序查询。•从启动到溢出的定时时间为:T=〔213-(TH1TL1)初值〕×机器周期•最长定时时间为:T=213×机器周期•最大脉冲计数个数为:N=213=8192定时/计数器工作方式02.工作方式1•加1计数器长度为16位,由TL1作为低8位、TH1作为高8位,•定时时间为:T=〔216-(TH1TL1)初值〕×机器周期•最长定时时间为:T=216×机器周期•最大脉冲计数个数为:N=216=65536定时/计数器方式13.工作方式2•该方式下,加一计数器溢出后可自动重新加载初值,不必软件干预•软件简单,定时更为准确,特别适合用于需要连续高精度定时的场合(如串口波特率发生器)。•定时时间为:T=〔28-TL1初值〕×机器周期•最长定时时间为:T=28×机器周期定时/计数器方式24.工作方式3•该方式只适合于定时/计数器0•方式3时T0被拆分为两个独立的加1计数器–TL0使用原T0的有关控制位、引脚和溢出标志;–TH0只能作定时器使用,但它占用T1的启停控制位TR1和溢出标志位TF1。•该方式使系统增加一个额外的8位定时器,但T0一旦设置为方式3,对T1的使用有一定的影响,一般将T1作为串口波特率发生器5.3定时/计数器应用举例•应用定时/计数器,实质是解决两个问题:–通过写入控制字,对定时/计数器初始化,确定恰当的工作方式;–计算加1计数器的初值,以确定定时的时间或计数的脉冲数1.定时/计数器初始化的步骤包括:•向TOMD写入工作方式控制字;•向TH、TL装入初值;•如果要使用中断,则置EA=1(总的中断允许)和ETx=1(允许定时器中断);•置TRx=1,启动定时/计数器。2.初值的计算•设计数器模值(TH、TL记满时的值)为M,计数脉冲个数为N,计数器初值为TC则:TC=M-N,或N=M-TC•在定时模式下,计数脉冲是单片机主脉冲的12分频,设周期为T计数,则定时时间T与其它参数的关系为:T=(M-TC)×T计数即:TC=M-T/T计数•TC=0时,定时时间最长•若主频12MHZ,则最大定时时间为:方式0:Tmax=213×1s=8.192ms方式1:Tmax=216×1s=65.536ms方式2、3:Tmax=28×1s=0.256ms•计算定时器初值:系统时钟频率为12MHz,所以计数脉冲周期T计数=12×1/12MHZ=1s。选择方式1,则:–计数脉冲数N=T/T计数=10×10-3/(1×10-6)=10000–定时初值X=216-10000=55536=D8F0HTH初值为D8H中,送入TL0初值为F0H例5-1利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,设系统时钟频率为12MHz设置T0的方式控制字TMOD:M1M0=01,GATE=0,C/=0,方式控制字为01HORG0000HMAIN:MOVTMOD,#01H;置工作方式1MOVTH0,#0D8H;装入计数初值MOVTL0,#0F0HSETBTR0;启动T0JNBTF0,$;等待定时时间到CPLP1.0;P1.0取反输出SJMPMAIN;循环,输出方波END例5-2使用定时器实现长时间的延时思路:把定时器设置为50ms,另外设置两个软件计数器20、60,总时间为50ms×20×60=60000ms=1分钟T1为方式1则M1M0=01H,使用定时器G/T=0,GATE=0,TMOD=10H时钟频率为12MHz。方式1为16位计数器,最大65536,减去50000等于15536,则计数器初值为3CB0HORG0000H;程序开始LJMPMAINORG0030HMAIN:MOV30H,#20;30h,31h分别置常数20,60MOV31H,#60;MOVTMOD,#10H;定时器方式1MOVTH1,#03CH;置定时器初值MOVTL1,#0B0HMOVIE,#00H;禁止中断SETBTR1;起动定时器LOOP:JBCTF1,LOOP1;查询定时器时间到转loop1AJMPLOOPLOOP1:MOVTH1,#03CH;重置定时器MOVTL1,#0B0HDJNZ30H,LOOP;定时是否到了20次MOV30H,#20DJNZ31H,LOOP;定时是否到了60次MOV31H,#60CPLP1.0;取反p1.0AJMPLOOPEND定时器小结:(2个16位加法计数器)☞运行/停止由TRx位控制,(当GATE=1时:由TRx位和Tx引脚上的信号共同控制)☞工作方式由TMOD决定;计数/定时由C/T位决定工作方式0(13位)永远不用工作方式3(T0拆为双8位)几乎无用工作方式1(16位)经常用到工作方式2(8位自动重装)经常用到☞从初值按机器周期或外部脉冲递加,溢出位TFx申请中断;中断允许由ETx位和EA位控制OVER!
本文标题:单片机原理及应用课件(陈林林)第5章--定时计数器原理及其应用1-rev1
链接地址:https://www.777doc.com/doc-4675289 .html