[工学]第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章 单片机的定时器/计数器 6.1 定时/计数器的结构与工作原理 6.2 定时器/计数器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用 定时/计数器的基本概念 几乎所有微机系统中都有定时/计数器,所有单片机内部都集成了定时/计数器。 MCS-51系列单片机8051有两个16位定时/计数器T0、T1,8052有三个定时/计数器T0、T1、T2,这些定时/计数器都具有定时器和计数器两种工作模式。 定时/计数器实质上都是通过计数来实现的。作为定时器工作时,是对固定周期的信号(如机器周期)进行计数,而作为计数器工作时,是对外部引脚(如P3.4)的输入脉冲进行计数。 6.1.1 定时/ 计数器的结构 6.3.5 定时器/计数器的初始化 1. 初始化步骤 (1) 确定T/C的工作方式--编程TMOD寄存器 (2) 计算T/C中的计数初值,并装载到THi和TLi (3) 开CPU中断和相应中断源中断--编程IE寄存器 (4) 启动定时器/计数器--编程TCON中和TR1或TR0位 2. 计数初值的计算 (1) 定时器的计数初值 设fosc=6MHz,则机器周期为2us 方式0 13位定时器最大定时间隔=213×2us=16.384ms 方式1 16位定时器最大定时间隔=216×2us=131.072ms 方式2 8位定时器最大定时间隔=28×2us=512us 例如:若使T/C工作在定时器方式1,要求定时1ms,求计数初值。如计数初值为a,则有(216-a)×2us=1000us,或a=216-500,因此TH、TL可置入65536-500 (2) 计数器的计数初值 在计数方式下: 方式0 13位计数器最大计数值=213=8192 方式1 16位计数器最大计数值=216=65536 方式2 8位计数器最大计数值=28=256us 例如:若使T/C工作在计数方式2,要求计数10个脉冲,求计数初值。   如计数初值为x,则有28-a=10,或a=256-10   因此TH=TL=246 6.1 定时/计数器的结构与工作原理 6.2 定时器/计数器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用 6.4.1 定时功能应用举例 6.4.2 计数功能应用举例 6.4 定时/计数器的编程和应用 设单片机的fosc=12MHz,采用T0定时方式1在P1.0脚上输出周期为2ms的方波(分别采用查询法和中断法)。 虚拟示波器 例6.1 周期为2ms的方波由2个半周期为1ms的正负脉冲组成 方波输出原理:定时1ms后将端口输出电平取反。 2ms 1ms 已知机器fosc =12MHz,则1ms定时的计数初值应为: a = t×fosc/12 = 1000/(12/12)=1000 解: #include reg51.h sbit P1_0=P1^0; void main (void) { TMOD = 0x01; //T0定时方式1 TH0=(65536-1000)/256; //预置计数初值 TL0=(65536-1000)%256; TR0=1; //启动T0 do{ while(!TF0); //等待定时器溢出 TF0=0; //标志清0 P1_0 =!P1_0; //定时时间到P1.0反相 TH0=(65536-1000)/256; //预置计数初值 TL0=(65536-1000)%256; }while(1); } T0 (1) 用T0定时方式1查询方式编程,程序如下: #include reg51.h sbit P1_0=P1^0; void timer0 (void) interrupt 1 { P1_0 = !P1_0; //P1.0取反 TH0=(65536-1000)/256; //预置计数初值 TL0=(65536-1000)%256; } void main (void) { TMOD = 0x01; //T0定时方式1 P1_0=0; TH0=(65536-1000)/256; //预置计数初值 TL0=(65536-1000)%256; EA=1; ET0=1; TR0=1; do { } while (1); //等待定时器溢出 } (2) 用T0定时方式1中断方式编程,程序如下: 图6.13 实例1仿真

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档