东南大学单片机教程1概述第5章定时器.pptVIP

东南大学单片机教程1概述第5章定时器.ppt

  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文档。上传文档
查看更多
东南大学单片机教程1概述第5章定时器

第四节 编程举例 1、方式0举例 例1 选用T1方式0用于定时,在P1.1输出周期为1ms的方波, 晶振fosc = 6MHz。 解:解题意: 因定时时间不长,显然取方式0即可,则M1M0=0; ??????因是定时器方式,所以C /(/T) =0; ??????在此用软件启动T1开始工作,所以GATE=0; ?????? T0不用,可任意设置,只要不使其进入方式3即可,一般取0。 ???? ??故TMOD=00H。 只要使P1.1每隔500 μs取反一次即可得到1ms方波, 因而T1的定时时间为500μs。 设置方式控制寄存器TMOD,和定时器初值。 定时时间500μs ????? ?X=8192 – 500μs / 2μs = 7942 D = 1 1111 0000 0110 B 因为方式0是13位计数器。TH1占高8位; TL1占低5位, TL1的高3位 未用应填写0。所以X的实际填写值应为: ??????X=1111 1000 0000 0110 B = F806 H ??????得:TH1=F8H TL1=06H 源程序如下: ? ORG 2000H ? MOV TMOD,#00H ; 控制字 ? MOV TL1,#06H ; TL1初值 ? MOV TH1,#0F8H ; TH1初值 ? SETB TR1 ; 启动T1 LP1: JBC TF1,LP2 ; 定时时间到? ? AJMP LP1 LP2: MOV TL1,#06H ; 重新设置计数初值 ? MOV TH1,#0F8H CPL P1.1 ; 输出取反 AJMP LP1 ; 重复循环 2、方式1举例 例2 用定时器T1定时,使P1.2端电平每隔1 min变反一次, 晶振为12MHz。 解:解题意,确定方案: 晶振为12MHz , 在方式1下,最大的定时时间Tmax为: ?????? Tmax = 65536 μs = 65.536 ms 显然不能满足本题的定时时间要求,因而需另设两个软件计数器, ?方案:T1定时50ms; 软件计数器1:秒计数,用片内50H作为循环次数。 软件计数器2:分计数,用片内51H单元作为循环次数。 设置TMOD 计算T1的初始值X ??????X=65536-50000μs / 1μs =15536D =3CB0 H 画出程序框图 3、方式2举例 例3 用定时器1方式2计数,要求每计满100次,将P1.0端取反。 解: 解题意: 设置TMOD 计算初值X TMOD=60H ?????? 方式2具有初值自动装入功能,初始化后不必再置初值。 ??????初值X=256-100=156 D=9C H TH1=TL1=9CH 外部计数信号由T1(P3.5)脚引入,每下跳变一次计数器加1 源程序如下: ? MOV TMOD,#60H ; 设置T1为方式2计数 ? MOV TH1,#9CH ; 赋初值 ? MOV TL1,#9CH SETB TR1 ; 启动 DEL: JBC TF1,REP ; 查询计数溢出否? AJMP DEL? REP: CPL P1.0 ; 输出? AJMP DEL 4、测量脉冲宽度举例 例5 利用T0门控位(GATE)测试 /INT0引脚上出现的正脉冲宽度, 已知晶振频率为 12MHz,将所测得值高位存入片内71H,低位存入 片内70H。 解: 设外部脉冲由 /INT0 (P3.2) 输入,T0工作于定时器方式1, GATE设为1(硬件启动)。测试时,应在外部脉冲 (/INT0)为低电 平时,设置TR0为1;当 /INT0变为高电平时,就启动定时,定时 初值设为0000H(对机器周期信号计数);/INT0 再次变低时, 停止定时。读出TH0及TL0中的数值。此数值即被测正脉冲的宽度。 因fosc=12MHz,它的单位恰为μs(机器周期为1μs)。 源程序如下: MOV TMOD,#09H ; 设置T0为定时方式1,GATE=1 MOV TH1,#00H ?MOV TL1,#00H ?MOV R0,#70H? JB P3.2,$ ; 等P3.2变低 SETB TR0 ; 启动T0准备工作 JNB P3.2,$ ; 等待P3.2变高 JB P3.2,$ ; 等P3.2再次变低 CLR TR0 ; 停止计数 MOV @R0,TL0 ; 存放低字节 INC R0? MOV @R0,TH0 ; 存放高字节 SJM

文档评论(0)

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

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

1亿VIP精品文档

相关文档