- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;第5章定时/计数器;5.1定时/计数器的结构和工作原理
;微处理器
(CPU);定时/计数器的工作原理;;5.2定时/计数器的控制;5.2.1工作模式存放器TMOD;;5.2.2控制存放器TCON;5.3定时/计数器的工作模式;;当GATE=1时,那么由控制或门的输出,此时与门的开启由INT和TR1共同控制。当TR1=1时,外部中断INT直接控制定时/计数器的启动和停止,即由0变为1电平时,启动计数,当由1变为0电平时,停止计数。这样情况常用来测量在端出现的正脉冲的宽度。;5.3.2模式1;TL1
(8位);5.3.4模式3;TH0借用T1的运行控制位TR1和溢出标志位TF1,组成另一个8位定时器,TH0的启、停受TR1控制,TH0的溢出将置位TF1,这时的TH0占用了T1的中断;TH0只对机器周期计数,故只能作定时器使用。;2.T0模式3情况下的T1;在单片机的串行通信中,一般是将T1作为串行口波特率发生器,且工作于模式2,这时将T0设置成模式3,可以额外增加一个8位定时器。;5.4定时/计数器的应用;5.4.1定时/计数器使用方法;应用程序包括:
①定时/计数器的初始化程序,包括设置TMOD:确定工作模式;写入定时初值到TH0、TL0或TH1、TL1;设置IE:开放定时器中断;将TR0或TR1置位:启动定时/计数器工作。;其中,Tcy为计数周期,即单片机的机器周期。
当机器周期为1μs时,工作在模式0,最大定时值为8192×1μs=8.192ms;假设工作在模式1,那么最大定时值为65536×1μs=65.536ms。;解:设定时初值为X,系统晶振为12MHz,那么机器周期1μs,要求T0定时时间为1ms,那么:
(8192―X)×10-6=1×10-3
故。
其中高8位应赋给TH0,低5位应赋给TL0,
所以TH0的初值为0E0H,TL0的初值为18H。;假设采用查询方式,那么编程如下:
MOVTMOD,#00H;设置T0方式0
MOVTH0,#0E0H;设置定时初值
MOVTL0,#18H
SETBTR0;启动T0工作
T0INT1:JBTF0,T0INT2;查TF0位为1,定时时间到
AJMPT0INT1;TF位不为1,定时时间未到
T0INT2:CLR TF0;查询方式由软件清TF0位
CLR P1.0;输出负脉冲串
SETB P1.0;
MOV TH0,#0E0H;用软件??新装载TH0和TL0
MOV TL0,#18H;以保证定时时间相同
SJMPT0INT1;10ms对应的初值X可由下式算得:
(216―X)×10-6=10×10-3
即X=55536=0D8F0H;假设采用查询方式,那么编程如下:
MOVTMOD,#01H;设置T0方式1
SETBTR0;启动T0工作
LOOP: MOVTH0,#0D8H;送入定时初值
MOVTL0,#0F0H
JNBTF0,$;查TF0位=0,定时时间未到,等待
CLRTF0;TF0位=0,定时时间到,软件清TF0位
CPLP1.0;P1.0取反输出
SJMPLOOP;转循环;例5-3某89C51单片机应用系统对单相电度表进行用电检测和管理,电度表每运转一圈产生一个脉冲,假设电度表每转200圈为1度电,试利用T1工作在模式2,对输入的脉冲进行计数,每计200个脉冲进行用电量的加1操作,假设用电量存放在片内RAM50H单元。;采用查询方式,编程如下:
MOVTMOD,#60H;设T1模式2,计数功能
MOVTH1,#38H;保存计数初值
MOVTL1,#38H;设置计数初值
SETBTR1;启动计数
LP:JBCTF1,LOOP
文档评论(0)