51单片机定时器的使用详细讲解.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51单片机定时器的使用详细讲解

定时器的讲解和使用 有对定时器2的详细讲解 章节概述 很棒 8.1 概述 8.2 定时器T0和T1的结构 8.3 定时器工作模式 8.4 定时器T2 8.1 概述 定时器是单片机的重要功能模块之一,在检测、控制领域有广泛应用。 定时器常用作定时时钟,以实现定时检测、定时响应、定时控制,并且可用于产生ms宽的脉冲信号,驱动步进电机 定时和计数功能最终都是通过计数实现的,若计数的事件源是周期固定的脉冲,则可以实现定时功能,否则只能实现计数功能。因此可以将定时和计数功能由一个部件实现。 实现定时和计数的方法一般有:软件定时、专用硬件电路和可编程定时器/计数器三种方法。 软件定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但增加CPU开销。 专用硬件电路定时:可实现精确的定时和计数,但参数调节不便。 可编程定时器/计数器:不占用CPU时间,能与CPU并行工作,实现精确的定时和计数,又可以通过编程设置其工作方式和其它参数,因此使用方便。 定时器的基本工作原理是:利用计数器对固定周期的脉冲计数,通过寄存器的溢出来触发中断。 具体应用步骤: 1)根据需要的定时时间,结合单片机的晶振频率,计算出寄存器的初始值 2)根据需要开中断 3)启动定时器 若已规定用软件启动,则可把TR0、TR1或TR2置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时。 2.模式寄存器(TMOD) TMOD用来选择定时器0、1的工作模式,低4位用于定时器0,高4位用于定时器1,其组成如图8-2所示。 8.3 定时器工作模式 定时器0 和定时器1 完全兼容,均可设定为四种不同的工作模式,如表8-1 所示。寄存器TMOD 的位域TxM选择定时器的工作模式。 两个定时器在模式0、1 和2 时独立工作;在模式3 时具有特定功能。 T0和T1的应用举例 例 若fOSC=26.67MHz,T1工作于方式1,产生45ms的定时中断,TF1为其中断源标志。试编写主程序和中断服务程序,使P1.0产生周期为90ms的方波。(忽略中断响应时间和指令执行时间) 解: 让P1.0每45ms取反一次即可实现。定时器的单次定时时间不可能达到45ms,如果设定16位的工作模式1,最大定时时间也才为4.9152ms。 可让定时器多次定时产生4.5ms的定时时间,如让T1工作在方式1,单次定时时间为4.5ms,那么T1中断10次就是45ms的时间。 (1)确定定时常数 假设使用fOSC的2分频作为计数源,则Tcy=2/ fOSC =2/(26.67×106)=75ns 由公式 可知计数初值 ∴TH1=0x15,TL0=0xA0。 (2)初始化程序 包括T1初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入T1。一般将初始化操作放在主程序中完成,当程序规模较大时,应编写单独的初始化程序,以利于程序的模块化设计。 (3)中断服务程序 中断服务程序除了完成要求的方波产生这一工作之外,还要注意将时间常数重新送入T1中,为下一次产生中断作准备。 程序清单如下(主程序): #include <c8051f020.h> sbit P1_0 = P1^0; int count=10; //10次T1中断为45ms void main( void ) { TMOD=0x10; //T1方式1 P1_0=0; TH1=0x15; //初值 TL1=0xA0; IEN0=0x08; //允许T1中断 IP|=0x08; IPH|=0x08; //TF1中断为高级中断 TR1=1 EA=1; // 总开中断 while(1); //死循环, 查询等待TF1置位,产生方波 } 程序清单如下(中断服务程序片段): { TF1=0; TH1=0x15; TL1=0xA0; //重填初值 If (count!=0) count--; else {count=10;P1_0=!P1_0;} } 定时器2由T2MOD寄存器、T2CON存器、功能存器TH2、TL2、RC2H、RC2L等电路构成。 TH2、TL2构成16位通用计数器。 RC2H、RC2L作为16位寄存器,在自动重载模式中RC2H、RC2L作为16位通用计数器的16

您可能关注的文档

文档评论(0)

135****6041 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档