6 单片机c程序设计4_定时器幻灯片.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
因为T1的TR1被占用,其启动和关闭较为特殊, 当设置好工作方式时,T1即自动启动。 若要停止,只需送入一个设置T1为方式3的方式字即可。 因为T1的TF1被占用,溢出后只能将溢出信号送到串行口! 因为T1的中断信号被占用,此时T1不能引起中断了! 定时器0在方式3时的逻辑结构 振荡器 ?12 控制 T0 TR0 GATE INT0 中断 TF0 TL0 (8 位 ) 12 1 f osc 中断 TF1 TH0 (8 位 ) TR1 C/T = 0 C/T = 1 12 1 f osc 12 1 f osc 定时器0方式3的应用场合 T1方式2自动重载! 通常情况下,T0不运行于工作方式3, 只有在T1处于工作方式2,并不要求中断的条件下才可能使用。 这时,T1往往用作串行口波特率发生器, TH0用作定时器, TL0定时器或计数器。 所以,方式3是为了使单片机有一个独立的定时器/计数器、 一个定时器以及一个串行口波特率发生器的应用场合而特地提供的。 这时,可把定时器1用于工作方式2,把定时器0用于方式3。 TMOD ;选择方式 TH0/TH1 ;预置初值 TL0/TL1, EA ;根据需要开中断 ET0/ET1 TR0/TR1 ;启动定时器 1)初始化编程格式 注意:方式0(13位):TL0/TL1的低5位有效 方式2(8位) :TL0/TL1=TH0/TH1=X 4 定时器/计数器程序结构 … ;定时器初始化 TF0/TF1 ;检测溢出标志 TH0/TH1;重装初值 TL0/TL1 … ;溢出处理 2)溢出处理编程格式 查询方式:先查询定时器溢出标志,再进行溢出处理。 注意:方式2时,不必重装初值。 4 定时器/计数器程序结构 1.在定时模式寄存器TMOD中加载相应的值,以指示采用哪个定时器, 以及选择哪种定时模式; 2.根据具体定时要求,设置THx、TLx的初始值; 3.在时间控制寄存器TCON中置TRx=1,启动定时器; 4.在程序中持续检查TCON中的定时器标志TFx,直至TFx=1; 5.清零TFx标志(TFx=0)并停止定时器(TRx=0),完成有关应用任务。 6.如循环定时,转到步骤2。 查询方式 查询检测弊端 查询检测方式,从代码中可以看到CPU一直都在检查定时器标志是否置位(TF0或TF1))。中断模式可以提高CPU的使用效率或降低系统功耗。Keil Cx51编译器对中断有很好的支持,只要简单地定义相关的中断服务例程(Interruption Sevice Routine),并在中断服务例程函数头中指明中断源和函数使用的寄存器组就可以了。堆栈处理、寄存器组切换、中断向量的产生等等由编译器负责处理。 //000BH(001BH)T0/T1中断入口 对应interrupt 1/3 void XXX_ISR (void )interrupt 1/3 using 2 { TH0/TH1//重装初值(中断服务程序) TL0/TL1 … //溢出处理 } main() { //初始化后执行其他程序 } 中断方式:初始化后执行其他任务,中断服务程序处理溢出。 注意:方式2时,不必重装初值。 1.设单片机的fosc=12 MHz晶振,要求在P1.0脚上输出周期为2 ms的方波(proteus下示波器可以查看) 要求用定时器0的方式1(16位定时器/计数器方式)编程,采用查询方式。 2.设单片机的fosc=12 MHz晶振,要求在P1.0脚上输出周期为2 ms的方波 要求用定时器0的方式1(16位定时器/计数器方式)编程,采用中断方式。 3.采用10MHz晶振,在P1.0脚上输出周期为2.5 s,占空比20%的脉冲信号 应用举例 4.有P3.4引脚(T0)输入一低频信号(其小于0.5kHZ),要求P3.4每发生一次负跳变时, P1.0输出一个50ms同步负脉冲。已知晶振频率为6MHZ。 应用举例 提示:1、先制作“周期为1s,占空比为98%”的脉冲。 可以使用脉冲发生器或者使用定时器产生该脉冲 2、将该脉冲信号引到P3.4,做外部脉冲。 注:如果使用定时器产生脉冲则需要两个51单片机,一个产生脉冲,一个进行脉冲展宽,两个51使用不同的hex文件关联到proteus进行仿真。 为了方便两个51工作频率都为6MHZ。 附:实验四实验结果 附:实验四需要的脉冲发生器配置 所在库 器件名字 选择脉冲波 高电平电压5v 占空比设置 周期1s 思考? 如果使用方式2有什么好处? 51的外部中断最多可以有几个? 扩展应用 1、交通灯,定时精确时间 2、

文档评论(0)

mkt361 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档