第七章 51系列单片机定时器计数器.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章上机实验(4) 外部中断实验(急救车与交通灯) ----详见指导书 * 例5:设某用户系统中已使用了两个外部中断源,并置定时器T1为模式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚上输出一个5KHZ的方波。fosc=12MHZ。 解:设T0工作模式3计数方式,把T0的引脚作附加的外部中断源输入,TL0的计数初值为FFH,当检测到T0引脚电平出现由1到0的负跳变时,TL0产生溢出,申请中断。这相当于边沿触发的外部中断源。 T0模式3下,TL0作计数用,而TH0可作为8位的定时器,定时控制P1.0引脚输出5KHZ的方波信号如图7.3-7所示。 ★ TL0的计数初值为FFH。 ★ TH0的计数初值X计算如下: 方波为5KHZ,故周期T=1/(5KHZ)=0.2ms=200μs 所以用TH0定时100μs时,TH0的初值X计算如下: (28-X)× 1μs=100μs X=256-100 =156=9CH 程序如下: MOV TMOD,#27H ;T0为模式3,计数方式;T1为模式2,定时方式 MOV TL0,#0FFH ;置TL0计数初值 MOV TH0,#156(9CH) ;置TH0计数初值 MOV TH1,#data ;dataJ是根据波特率要求设置的常数 MOV TL1,#data MOV TCON ,#55H ;外中断0、1边沿触发,启动T0,T1 MOV IE,#9FH ;开放全部中断 ┇ TL0溢出中断服务程序(由000B转来) TL0INT:MOV TL0,#0FFH ;TL0重赋初值 ( 中断处理) RETI TH0溢出中断服务程序(由001B转来) TH0INT:MOV TH0,#156(9CH) ;TH0重赋初值 CPL P1.0 ;P1.0取反输出 RETI ②计算计数器的计数初值: 编程时将计数初值送THi、 TLi; 可编程器件在使用前需要进行初始化: ①确定TMOD控制字:编程时将控制字送TMOD; ③ 开中断(如果使用中断方式): 编程实置位EA、ETi ④ TRi位置位控制定时器的启动和停止。 例题1:设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500μs的方波脉冲,并由P1.0 输出。试以中断方式实现。 8051 P1.0 500μs ① TMOD确定 T1控制 T0控制 X X X X 1 0 0 0 M0 M1 C/T GATE M0 M1 C/T GATE 控制字10H 要产生500μs 的方波脉冲,只需在P1.0端以250μs为间隔,交替输出高低电平即可实现。为此,定时间应为250μs 。使用6MHz晶振,则一个机器周期为2μs,设待求计数初值为X,则: ② 计算计数器的计数初值; (216–X)×2×10 -6 =250×10 -6 即216–X=125 X=21=0FF83H 所以,初值为: TH1=0FFH,TL1=83H 6-125=10000H-7DH ③ 采用中断方式:编程时打开全局和局部中断。 ④ 由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。 TR1=1,启动; TR1=0,停止。 程序设计 ORG 0000H LJMP MAIN ;主程序入口 ORG 001BH LJMP INTT1 ;T1中断入口 INTT1: MOV TH1,#0FFH ;重新设置初值 MOV TL1,#83H CPL P1.0 ;输出取反 RETI ORG 1000H MAIN:MOV TMOD, #10H ;T1为方式1 MOV TH1, #0FFH MOV TL1,#83H ;初值 SETB

文档评论(0)

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

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

1亿VIP精品文档

相关文档