单片机定时器计数器原理与应用_第1页
单片机定时器计数器原理与应用_第2页
单片机定时器计数器原理与应用_第3页
单片机定时器计数器原理与应用_第4页
单片机定时器计数器原理与应用_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电:MSC-51单片机C语言简单入门教程技术支持群:11313486hUD:红蜂电子7习室hUD:红蜂电子7习室MSC-51单片机C语言简单入门教程技术支持群:11313486hUD:红蜂电子了习室电:MSC-51单片机C语言简单入门教程技术支持群:11313486hUD:红蜂电子7习室hUD:红蜂电子7习室MSC-51单片机C语言简单入门教程技术支持群:11313486hUD:红蜂电子了习室定时器/计数器在工业检测、控制中,许多场合都要用到计数或定时功能。MCS-51单片机内何两个可编程的定时器/计数器Tl、TO,以满足这方面的需要。两个定时器/计数器都具有定时器和计数器功能。1、两种工作模

2、式:1)计数功能是対外來脉冲进行计数。MCS-51芯片有TO和T1两个输入引脚,分别是这两个计数器的计数脉冲输入端。每当外部输入的脉冲发生负跳变时,计数器加1。2)定时器功能也是通过计数器的计数來实现的,不过此时的计数脉冲來自单片机内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。如果单片机采用12MHz晶体,则计数器频率为lMHz(个机器周期等于12个振荡周期)即每过lus的时间计数器加lo这样可以根据计数值计数出定时时间,也可以根据定时时间的要求计算出计数器的初值。当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周

3、期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。3)如果晶阵频率为12MHz是如何计算的呢?一个计数脉冲所用空时间=一个机器周期一个机器融=12个振荡周期-个振荡删二振荡频率分之一振荡频率12-个计数脇中所用阿间=12X振翊率二-|2MHZ=1微秒计数频率二.12MHZT2=1MHZ单片机的定时器/计数器具有4种工作方式。其中控制字均在相应得特殊功能寄存器中,通过编程,用户可以方便地选择定时器/计数器两种工作模式和4种工作方式。2、定时器计数器的结构MCS-51单片机的定时器/计数器结构如卜图,定时器/计数器TO由特殊功能寄存器THO,TLO构成,定时器/计数器T

4、1由特殊功能寄存器TH1、TL1构成。特殊功能寄存器TMOD用丁选择定时器/计数器TO、T1的工作模式和工作方式。TCON用于控制TO、T1的启动和停止计数,同时包含了TO、T1的状态。TMOD、TCON这两个寄存器的内容由软件设置。单片机复位时,两个寄存器的所有位都被清“0”。3、工作方式寄存器TMODTMOD用丁选择定时器/计数器的工作模式和工作方式,它的字节地址为89H,不能进行位寻址。其格式如F:GATEMlM0:CATEC/TM)MO89HTMOLD2DODID7D6D5D403汀I方式字段TO方式字段8位分为两组,高四位控制T1,低四位控制TO。GATE二0时,仅由运行控制位TRO

5、或TR1二1來启动定时器/计数器运行。GATE二1时,由TRO或TR1二1和外部中断引脚上的高电平共同来启动定时器/计数器。Ml.MO共有四种编码,对应4种工作方式如图:MLMO工作方式00方式0,为13位定时器/计数黠0方式1,为16位定时器/计数器i0方式2,8初值自动重新装入的8位定时器/计数器1I方式儿仅适用于TD,分成两个8位计数器,T1停止计数C/T一计数器模式和定时器模式选择位C/T二0,为定时模式。C/T=l,为计数模式,计数器对外部引脚TO或T1的外部脉冲负跳变计数。4、定时器计数器控制寄存器TCONTCON的字节地址为88H,可进行位寻址,位地址为88H-8FH。TCON格

6、式如下:TF!TRITI-0TROJElm1E0ITOD2DOD1D5D4D3D7D6TCON低四位与外部中断有关,已介绍。高四位的功能如卜:1、TF1、TFO-一Tl、TO计数器溢出标志位当计数器溢出时,该位置“1”。使用查询方式时,此位作为状态位供CPU查询,但应注意在查询该位有效后应以软件方法及时将该位清“0”。使用中断方式时,此位作为中断申请标志位,进入中断服务程序后由硬件自动清“0”。2、TRI、TRO计数器运行控制位TR1/TR0二1,启动定时器/计数器工作的必要条件,还与GATE位的状态有关。TR1/TR0二0,停止定时器/计数器工作,改为可由软件置“1”或清”0”.5、定时器,

7、计数器的4种工作方式当Ml.M0为00时,定时器/计数器被设置为工作方式0,这时定时器/定时器的等效框图如F:GATEINT1脚中斬A定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0,1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进行,THX计数溢出则置位TCON中的溢出标志位TFXoC/T位控制的电子开关决定了定时器/计数器的工作模式:C/T二0,电子开关打在上而位置,T1为定时器工作模式,以振荡器的12分频后的信号作为计数信号。C/T二1,电子开关打在下面的位置,T1为计数器工作模式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计

8、数器加1。电:MSC-51单片机C语言简单入门教程技术支持群:11313486电:MSC-51单片机C语言简单入门教程技术支持群:11313486hUD:红蜂电子7习室hUD:红蜂电子7习室MSC-51单片机C语言简单入门教程技术支持群:11313486hUD:红峰电子7习室GATE位的状态决定定时器/计数器运行控制取决J*TRX一个条件还是TRX和INTX引脚这两个条件。GATE二0时,A点如图电位恒为1,B点的电位取决T-TRX状态。TRX二1,B点为高电平,控制端控制电子开关闭合。计数器脉冲加到TI或TO引脚,允许T1或TO计数。TRX二0,B点为低电平,电子开关断开,禁止T1或T0计数

9、。GATA二1时,B点点位由INTX的输入电平和TRX的状态确定,当TRX二1,且INTX二1(X二1,0)时,B点才位1,控制端控制电子开关闭合,允许定时器/计数器计数,故这种情况卜计数控制是由TRX和INTX两个条件控制。当Ml、H0为01时,定时器/计数器工作于方式1,这时定时器/计数器的等效电路如卜图所示。以定时器/计数器T1为例。方式1和方式0的差别仅仅在丁计数器的位数不同,方式1为16位的计数器,由THX作为高位和TLX作为低位构成(X二0,1),方式0则为13位计数器,有关控制状态位的含义(GATE、C/T、TFX、TRX)与方式0相同。中断方式0和方式1的最人特点是计数溢出后,

10、计数器为全0。因此在循坏定时或循坏计数应用时就存在反复用软件设置计数初值的问题。这不仅影响定时精度,而且也给程序设计带來麻烦。方式2就是针对此问题而设置的。当Ml、H0为10时,定时器/计数器处丁工作方式2,这时定时器/计数器的等效框图如图所示。(以定时器T1为例,X二1)。中断定时器/计数器的方式2为自动恢复初值的8位定时器/计数器,THX作为常数缓冲器,当TLX计数溢出时,在置1溢出标志位TFX的同时,还自动的将THX中的常数送至TLX,使TLX从初值开始重新计数。定时器/计数器的方式2工作过程如卜图所示。方式3是为了增加一个附加的8位定时器/计数器而提供的,方式3只能适用于TO,T1不能

11、工作在方式3。T1处于方式3时,相当于TR1=O,T1停止计数。当TMOD的低2位为11时,TO的工作坊式被选为方式3,各引脚与TO的逻辑关系如下图所示。中断中断定时器/计数器TO分为两个独立的8位计数器:TLO和THO,TLO使用TO的状态控制位C/T、GATE、TRO、INTO,而THO被固定为一个8位定时器,并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求标志TFlo6、定时器,计数器的应用假设用定时器0定时50毫秒的编程步骤。1)对TMOD赋值,以确定TO和T1的工作方式。GATE5MlM0:GATEerrM)MGTL方式字段TO方式字徐TMODD7D6D5D4

12、D3D2DODI89HGATE=0时,仅由运行挖制侵TRO或TR1=L来启幼定肘謝计数路运行crr=o.为宦时復式.MLM0为D1肘.定时聘/计数髯工作千方武1TMOD二进制为00000001TMOD十六进钊01TM0D=OX012)计算初值,并将其写入THO、TLO或TH1、TLK一个计数脉冲所用細间=一个机器周期一个机器翩=12个振荡周期一个振荡周期二振麹率分之一転荡频率=12IvHz12-个计数脇中所用阿间=12X振翊率二-|2MHZ=1微秒方式1是16位的计数器所以是大计擞为216=65536:50#=50000#ffl当于盹000次个计数所用的时同设:装入的初值为其C65536-X)

13、=50000X二15536X的二进制为11110010110000高八位装入TH0中忸八位装入TL0中转換为+六进制为TH0=0X3C;TLO=OXBO;3)中断方式时,则对IE赋值,开放中断。EA二1;/开总中断ET0二1;/开定时器中断4)使TR0或TR1置位,启动定时/计数器定时或计数。具体程序如F:#include/引入头文件#defineuintunsignedint/宏定义#defineucharunsignedchar/宏定义sbitdula=P2A6;/定义段选sbitwela=P2A7;/定义位选ucharnuni11:/定义变量ucharcodetable=0 x3f,0

14、x06,0 x5b,0 x4f,0 x66.0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39.0 x5e,0 x79,0 x71);voidmain()MSC-51单片机C语言简单入门教程技术支持群:11313486MSC-51单片机C语言简单入门教程技术支持群:11313486hitD:红峰电子*7-习室hUD:红峰电子学习室MSC-51单片机C语言简单入门教程技术支持群:11313486hUD:红峰电子7习室tt=O;num=O;TM3D=OxO1;/设定定时器0为工作方式1TH0=0 x3C;/装入高八位TLO=OxBO;/装入低八位EAT;

15、/开总中断ET0=1;/开定时器中断TR0=1;/启动定时器wela=1;/打开位选PO=OxOO;/显示所有位wela=0;/关闭位选dula=1;/打开段选P0=0 x3F;/送入字形0dula=O;/关闭段选while(l)/主循环if(tt=20)/进入20次中断每次中断为50毫秒,就是1秒tt=0;/让tt初始为零numn-;/1itnum-+if(num=16)/限制num到16num=0;/ihnum清零dula=1;/打开段选P0=tablenurrj;H送入字形码dula=0;/关闭段选1)voidexter0()interrupt1定义中断函数TH0=0 x3C;门装入高八位TLO=OxBO;/装入低八位11+;17、方式0应用假设系统时钟采用6MHz,要在P1.0输出一个周期为2ms的方波,如图所示。tPLOIms1方波的周期用定时器TO來确定,采用中断的方法來实现,即在TO中设置一个时河常数(计数初值),使其每隔1ms产生一次中断,CPU相应中断后,在中断服务程序中对P1.0取反。编程步骤为以K:1)计算初值如卜图机器周期=12/晶振频率=12/(6x106)=2fj设:苗要装人TO的初值为X,贝叫2卩一X)x2x10-6=1xio32l3-X=500X=7692化为16进制X=1EOCH=1111000001100Bo将这13位初值填入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论