第6章定时器计数器.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文档。上传文档
查看更多
第6章定时器计数器概要

6.1 定时器/计数器的结构 AT89S51的定时器/计数器结构如图6-1所示,T0由特殊功能寄存器TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成。 T0 和T1都具有定时器和计数器两种工作模式,4种工作方式(方式0~3)。属于增计数器。 特殊功能寄存器TMOD用于选择T0、T1的工作模式和工作方式。特殊功能寄存器TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。T0、 T1不论是工作在定时器模式还是计数器模式,实质是对脉冲信号进行计数, (4)T1设置在方式3。 当T0设置在方式3时,再把T1也设置成方式3,此时T1停止计数。 6.3 对外部输入的计数信号的要求 当定时器/计数器工作在计数器模式时,计数脉冲来自外部输入引脚T0或T1。当输入信号产生由1至0的跳变(即负跳变)时,计数器值增1。每个机器周期的S5P2期间,都对外部输入引脚T0或T1进行采样。如在第一个机器周期中采得的值为1,而在下一个机器周期中采得的值为0,则在紧跟着的再下一个机器周期S3P1期间,计数器加1。 6.4 定时器/计数器的编程和应用 在4种工作方式中,方式0与方式1基本相同,只是计数器的计数位数不同。方式0为13位计数器,方式1为16位计数器。由于方式0是为兼容MCS-48而设,且其计数初值计算复杂,所以在实际应用中,一般不用方式0,而采用方式1。 6.4.1 P1口外接的8只LED每0.5s闪亮一次。 【例6-1】在AT89S51单片机的P1口上接有8只LED(电路见图4-7)。下面采用定时器T0的方式1的定时中断方式,使P1口外接的8只LED每0.5s闪亮一次。 则5000=(216??X)?12/11.0592 得:X = 60928,转换成16进制后为:0xee00,其中0xee装入TH0,0x00装入TL0。 (3)设置IE寄存器 本例由于采用定时器T0中断,因此需将IE寄存器中的EA、ET0位置1。 (4)启动和停止定时器T0 将定时器控制寄存器TCON中的TR0=1,则启动定时器T0;TR0=0,则停止定时器T0定时。 参考程序如下: * #includereg51.h Char i=100; /*给变量i赋初值*/ void main( ) {TMOD=0x01; /*设置定时器T0为方式1*/ TH0=0xee; /*向TH0写入初值的高8位*/ TL0=0x00; /*向TL0写入初值的低8位*/ P1=0x00; /*P1口8只LED点亮*/ EA=1; /*总中断允许*/ ET0=1; /*定时器T0中断允许*/ TR0=1; /*启动定时器T0*/ while(1) ; /*无穷循环,等待定时中断*/ } * /*以下为定时器T0的中断服务程序*/ void T0_int(void) interrupt 1 {TH0=0xee; /*给T0装入16位初值,计4608个数后,T0溢出*/ TL0=0x00; i--; /*循环次数减1*/ if(i=0) {P1=~P1; /*P1口按位取反*/ i=100; /*重新设置循环次数*/ } } * 6.4.2 计数器的应用 【例6-2】 采用定时器T1的方式1的中断计数方式,如图6-13所示,计数输入引脚T1(P3.5)上外接开关K1,作为计数信号输入。按4次K1后,P1口的8只LED闪烁不停。 (1)设置TMOD寄存器 T1工作在方式1,应使TMOD的M1、M0=01;设置计数器工作模式C/T*=1;对T0的运行控制仅由TR0来控制,应使GATE0=0。定时器T0不使用,各相关位均设为0。所以,TMOD寄存器应初始化为0x50。 * * 图6-13 由外部计数输入信号控制LED的闪烁 (2)计算T1计数初值 由于每按4次K1,计数一次,因此计数器的初值为65536-4=65532,将其转换成16进制后为:0xfffc,因此,TH0=0xff,TL0=0xfc。 (3)设置IE寄存器 本例由于采用定时器T1中断,因此需将IE寄存器中的EA、ET1位置1。 (4)启动和停止定时器T1 将定时器控制寄存器TCON中的TR1=1,则启动定时器T1计数;TR1=0,则停止定时器T1计数。 参考程序如下: * #include reg51.h void Delay(unsigned int i)/* 定义延时函数Delay( ),i

文档评论(0)

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

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

1亿VIP精品文档

相关文档