51单片机定时器-计数器.ppt

上传人:xt****7 文档编号:3758997 上传时间:2019-12-23 格式:PPT 页数:32 大小:392.50KB
返回 下载 相关 举报
51单片机定时器-计数器.ppt_第1页
第1页 / 共32页
51单片机定时器-计数器.ppt_第2页
第2页 / 共32页
51单片机定时器-计数器.ppt_第3页
第3页 / 共32页
点击查看更多>>
资源描述
89C51单片机原理及应用,89C51单片机定时器/计数器,单片机的定时计数器,单片机应用系统中定时计数的需求:如用单片机控制的打铃器、空调的定时开关、啤酒自动生产线上对酒瓶的计数装置等。89C51单片机片内的定时/计数器:两个位可编程的定时计数器:T0和T1,都能定时和对外部事件进行计数。此外,T1还可以作为串行接口的波特率发生器。,定时计数器的结构,.定时和计数的原理,(1)计数定时计数器的实质是在处置基础上的加计数器(位),,16位定时/计数器的计数容量是65536,单片机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加1,,当接收满65535个脉冲后,再来一个脉冲,计数值清0表明这一轮计数结束,同时将标志位TF0或TF1置1。,(2)定时单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间隔相等,则计数值就代表了时间的流逝。,由单片机的晶振经过12分频后得到。由于晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。当单片机采用12的晶振时,它提供给计数器的脉冲频率是,脉冲周期就是微秒。,定时/计数器T0的结构示意图,获得标准时间,单片机内部的16位定时计数器由高8位和低8位两个寄存器组成:T0由TH0和TL0组成,T1由TH1和TL1组成,定时计数器的计数值就存放在这里面。定时/计数器T1的结构与T0相同。定时器/计数器的控制寄存器TMOD:选择定时器/计数器T0、T1的工作模式和工作方式。TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。,定时/计数器的结构,单片机复位时,两个寄存器的所有位都被清0。定时器/计数器控制寄存器TCON,低4位与外部中断有关,已介绍。高4位的功能如下:(1)TF1、TF0计数溢出标志位(2)TR1、TR0计数运行控制位1:启动定时器/计数器工作0:停止定时器/计数器工作工作方式控制寄存器TMOD,8位分为两组,高4位控制T1,低4位控制T0。(1)GATE门控位0:以TRX(X=0,1)来启动定时器/计数器运行。1:用外中断引脚(INT0*或INT1*)上的高电平和TRX来启动定时器/计数器运行。(2)M1、M0工作方式选择位M1M0工作方式00方式0,13位定时器/计数器。01方式1,16位定时器/计数器。10方式2,8位常数自动重新装载11方式3,仅适用于T0,T0分成两个8位计数器,T1停止计数。,(3)C/T*计数器模式和定时器模式选择位0:定时器模式。1:计数器模式。,定时/计数器的工作方式,一方式0,方式0是13位的定时/计数方式,因而最大计数值为2的13次幂,等于8192。如计数值为N,则置入的初值X为:X=8192-N例如定时/计数器T0的计数值为1000,则初值为7192,转换成二进制数为1110000011000B,则TH0=11100000B,TL0=00011000B。,工作方式0为13位的计数器,C/T*位决定工作模式:0:开关打在上面,为定时器工作模式;1:开关打在下面,为计数器工作模式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。GATE位:决定定时器/计数器的运行取决于TRx一个条件还是TRx和INTx*引脚两个条件。(1)0:A点是否计数,仅取决于TRx的状态。(2)1:B点电位由INTX*的输入电平和TRX的状态这两个条件来确定。是否计数是由TRx和INTx*二个条件来控制的。,二、方式1,方式1是16位的定时/计数方式,因而最大计数值为2的16次幂,等于65536。如计数值为N,则置入的初值X为:X=65536-N如定时/计数器T0的计数值为1000,则初值为65536-1000=64536,转换成二进制数为1111110000011000B,则TH0=11111100B,TL0=00011000B。,三方式2,方式2,16位的计数器只用了8位来计数,用的是TL0(或TL1)的8位来进行计数,而TH0(或TH1)用于保存初值。当TL0(或TL1)计满时则溢出,一方面使TF0(或TF1)置位,另一方面溢出信号又会触发三态门,使三态门导通,TH0(或TH1)的值就自动装入TL0(或TL1)。TLX作为常数缓冲器,当TLX计数溢出时,在置“1”溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数。,特别适合于产生比较精确的连续脉冲信号。,由于是8位的定时/计数方式,因而最大计数值为2的8次幂,等于256。如计数值为N,则置入的初值X为:X=256-N如定时/计数器T0的计数值为100,则初值为256-100=156,转换成二进制数为10011100B,则TH0=TL0=10011100B。注意:由于方式2计满后,溢出信号会触发三态门自动地把TH0(或TH1)的值装入TL0(或TL1)中,因而如果要重新实现N个单位的计数,不用重新置入初值。,方式3只有定时/计数器T0才有,当M1M0两位为11时,定时/计数器T0工作于方式3,定时/计数器T0被分为两个部分TL0和TH0,其中,TL0可作为定时/计数器使用,占用T0的全部控制位:GATE、C/T、TR0和TF0;而TH0固定只能作定时器使用,对机器周期进行计数,这时它占用定时/计数器T1的TR1位、TF1位和T1的中断资源。,四、方式3,工作方式3相当于增加一个附加的8位定时器/计数器,从而具有3个定时器/计数器。只适用于定时器/计数器T0。T1不能工作在方式3,T1方式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。1工作方式3下的T0T0分为两个独立的8位计数器:TL0和TH0。TL0使用T0的状态控制位C/T*、GATE、TR0、,而TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。,2T0工作在方式3下T1的各种工作方式当T1用作串行口的波特率发生器时,T0才工作在方式3。T0处于方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。,定时器/计数器对输入信号的要求外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。输入信号的高、低电平至少要保持一个机器周期。如图所示,图中Tcy为机器周期。,定时器/计数器的初始化,定时/计数器的方式寄存器TMOD,其中:M1、M0为工作方式选择位,用于对T0的四种工作方式,T1的三种工作方式进行选择,选择情况如下,C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当C/T=0时工作于定时方式。,GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。,定时/计数器的控制寄存器TCON,其中:TF1:定时/计数器T1的溢出标志位,当定时/计数器T1计满时,由硬件使它置位,如中断允许则触发T1中断。进入中断处理后由内部硬件电路自动清除。TR1:定时/计数器T1的启动位,可由软件置位或清零,当TR1=1时启动;TR1=0时停止。,16位定时计数器计满65536个脉冲时,也会发生溢出。定时计数器溢出后标志位TF0(或TF1)由0变1,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会响一样。如果采用12的晶振,对应的脉冲周期是微秒,计满65536个脉冲所对应的时间就是65.536ms。,定时/计数值的设置,计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值,如我们要计100,那就存入65436,只要再来100个脉冲,就刚好会溢出,引发中断。,在时钟频率为12MHz的情况下,每个时钟脉冲是1微秒,则计满65536个脉冲需65.536毫秒,如要定时10毫秒则存入初值55536,(10毫秒是10000微秒,需计数10000个脉冲)。可见,定时器的定时时间长短与系统时钟和定时器初值有关。,定时器初值的设置,定时器计数器初值计算,定时器计数器用于定时或计数时,必须按照需要给计数器设置初值。定时器计数器在计数初值的基础上以加1的方式进行计数,在计数器从全1变为全0时,将自动产生溢出中断请求。(1)计数初值计算假设要计数的值为X,由于计数器是加工计数器,所以定时器计数器的初值为2X:其中n的值依赖于工作方式,对于方式0,n=13;即初值=8192-X对于方式1,n=16;即初值=65536-X对于方式2和方式3,n=8;即初值=256-X,n,2)定时初值计算定时就是定时间,假设晶振频率为f,定时时间为T,对应的计数值为X,此时计数器是将系统时钟12分频后作为计数脉冲,则以下等式成立。要装入的计数器初值CI=2Tfosc/12。例如:已知晶振的频率为6MHz,要求定时为2ms,则当为方式0时,应装入的计数初值为;8192210610/12=8192-1000=7192,n,3,6,定时时间常数初值X:方式0X=8192-T(fosc/12)方式1X=65536-T(fosc/12)方式2、方式3X=256-T(fosc/12)其中T是需要定时的时间,单位是微秒;fosc是晶振,计数时间常数X:方式0X=8192-S方式1X=65536-S方式2、方式3X=256-S说明:式中S是需要计数的次数,定财器计数器初始化步骤,1)确定工作方式:把工作方式控制字写入到TMOD中;2)设置定时或计数的初值:根据问题要求,求出定时或计数的初值,写入到寄存器THO、TLO或THI、TLI中。3)如果需要中断,使定时器中断允许位ET0或ETI置位,如果要求中断嵌套,还应设置相应的中断优先级,然后置位EA,使CPU开放中断;如果不需要中断,仅以软件方式对计数器溢出标志TFO或TFI进行查询,则可略去此步骤;4)启动定时器计数器:将TRO或TRI置1即可启动定时器计数器。,定时器/计数器的编程和应用4种工作方式中,方式0与方式1基本相同,由于方式0是为兼容MCS-48而设,初值计算复杂,在实际应用中,一般不用方式0,而采用方式1。方式1应用例1假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。,方波的周期用T0来确定,让T0每隔1ms计数溢出1次(每1ms产生一次中断),CPU响应中断后,在中断服务程序中对P1.0取反。(1)计算初值X设初值为X,则有:(216-X)210-6=110-3216-X=500X=65036X化为16进制,即X=FE0CH=1111111000001100B。所以,T0的初值为:TH0=0FEHTL0=0CH,例2假设系统时钟为6MHz,编写定时器T0产生1秒定时的程序。(1)T0工作方式的确定定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:方式0最长可定时16.384ms;方式1最长可定时131.072ms;方式2最长可定时512s。选方式1,每隔100ms中断一次,中断10次为1s。(2)计算计数初值因为:(216-X)210-6=10-1所以:X=15536=3CB0H因此:TH0=3CH,TL0=B0H(3)10次计数的实现采用循环程序法。,方式2的应用省去程序中重装初值的指令,并可产生相当精确的定时时间。例3当T0(P3.4)引脚上发生负跳变时,从P1.0引脚上输出一个周期为1ms的方波,如图所示。(系统时钟为6MHz),(1)工作方式选择T0为方式1计数,初值0FFFFH,即外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,发中断请求。在进入T0中断程序后,把F0标志置“1”,说明T0脚已接收了负跳变信号。T1定义为方式2定时。在T0脚发生一次负跳变后,启动T1每500s产生一次中断,在中断服务程序中对P1.0求反,使P1.0产生周期1ms的方波。(2)计算T1初值设T1的初值为X:则(28-X)210-6=510-4X=28-250=6=06H,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!