s7-2 定时器应用.ppt

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

MCS-51内部定时/计数器及其应用 定时/计数器结构示意图 定时/计数器应用时的初值计算 计数器的初值由程序设定 设计数器宽度为n,定时时长为T,要求计数脉冲个数为N,计数初值为X,机器周期为TCY 。 计数:2n=N+X X= 2n -N 定时:2n=T/ TCY + X X= 2n - T/ TCY = -T/ TCY 计数器的初值由程序设定 实际应用时最好用(简单): X=-N 计数方式 X=-T/ TCY 定时方式 例1 从P1.0引脚上输出周期为20ms的方波,(fOSC=12MHz),采用T0定时、方式1 。 计数初值计算:(12分频的机器周期=1us) (216-X初值)×TCY=10ms X=216-(1*10-2 )/(1*10-6 ) X初值=65536-10000=55536=D8F0H TH0=D8H, TL0=F0H (等效为: TH0=high(-10000), TL0=low(-10000)) ORG 0100 MAIN:MOV TMOD,#01H ;设置工作模式 MOV TH0,#HIGH(-10000) ;T0送初值high(-1000) MOV TL0,#LOW(-10000) SETB EA ;开放CPU中断 SETB ET0 ;开放T0中断 SETB TR0 ;启动计数器 SIMP $ ;等待计数器溢出中断 TIMER0: MOV TH0,#HIGH(-10000) ;T0送初值 MOV TL0,#LOW(-10000); CPL P1.0 ;P1.0取反产生方波 RETI END 定时器查询延时 ORG 0000H ;复位入口地址 AJMP MAIN ORG 0100H MAIN:MOV TMOD,#01H ;设置工作模式 SETB TR0 ;启动计数器 LOOP:MOV TH0,#HIGH(-10000) ;T0送初值 MOV TL0,#LOW(-10000) JNB TF0,$ ;等待计数器溢出 CPL P1.0 ;P1.0取反产生方波 CLR TF0 ;清除溢出标志 SJMP LOOP END 例2:从P1.0上输出一个周期性方波,周期10ms,晶振=12M,采用T1定时、方式2。 分析:周期为10ms的方波要求P1.0上的电平每5ms变更一次,但在方式2,T1的最大定时为256us,因此不能直接实现,可用T1产生250us定时,再用软件计数20次,实现5ms定时。 计数初值计算: (28-X初值)×TCY=250us 250us:X初值=6H 定时器查询延时: ORG 0000H AJMP MAIN MAIN: MOV TMOD,#20H ;设置T1工作模式 SETB P1.0 ;置P1.0为高 MOV TH1,#06H ;置T1初值,5ms MOV TL1,#06H SETB TR1 ;启动T1 LOOP: MOV R2,#20 LOOP1:JNB TF1,LOOP1 ;等待T1溢出 CLR TF1 ;清除溢出标志 DJNZ R2,LOOP1 ;等待5ms CPL P1.0 ;置P1.0为低 AJMP LOOP 例3 设在单片机INT1引脚上接入一个高电平宽度小于65536us的周期性脉冲,试编程测量其正脉冲宽度 分析:T1工作在方式1,计数初值为0,GATE=1,置TR1=1,则当INT1=1时,T1开始计数,直到INT1=1,此时,T1中的值为INT1引脚上的脉冲宽度。 ORG 0000H MAIN: MOV TMOD,#90H ;置T0方式控制字:方式1,定时方式 MOV TH1,#00H MOV TL1,#00H ;T0从0开始计数 LOOP0:JB P3.2,LOOP0 ;等待高电平结束 SETB TR1 ;

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档