网站大量收购独家精品文档,联系QQ:2885784924

51单片计4种定时器应用场景详解.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51单片计4种定时器应用场景详解 51单片机的 定时器有两个,分别是定时器0和定时器1。 定时器0:定时器0是一个8位定时器,它可以用作定时器或计数器。在定时器模式下,它可以生成中断,定时范围为0255。在计数器模式下,它可以计数外部脉冲,计数器范围为065535。 定时器1:定时器1是一个16位定时器,也可以用作定时器或计数器。在定时器模式下,它可以生成中断,定时范围为065535。在计数器模式下,它可以计数外部脉冲,计数器范围为065535。 在使用定时器时,需要先进行定时器的初始化设置。具体步骤如下: 1.选择定时器工作模式(定时器或计数器)。 2.设置计数值或定时器的初值。 3.打开定时器中断(如果需要中断)。 4.打开定时器开关。 // 定时器0初始化函数 void timer0_init() { TMOD = 0xF0; // 设置为定时器模式,使用模式1 TH0 = 0xB1; // 设置定时器初值为0xB1 TL0 = 0xE0; // 设置定时器初值为0xE0 ET0 = 1; // 打开定时器中断 TR0 = 1; // 打开定时器开关 } 代码将定时器0设置为10ms中断一次 #include void timer0_init() { TMOD = 0xF0; // 设置为定时器模式,使用模式1 TH0 = 0x3C; // 设置定时器初值为0x3C TL0 = 0xAF; // 设置定时器初值为0xAF ET0 = 1; // 打开定时器中断 TR0 = 1; // 打开定时器开关 } void timer0_isr() interrupt 1 { TH0 = 0x3C; // 重新设置定时器初值 TL0 = 0xAF; // 处理中断事件 } void main() { timer0_init(); // 初始化定时器0 EA = 1; // 打开总中断开关 while(1); } 使用定时器0来产生一个1秒钟的中断 51单片机定时器有以下四种模式: 模式0(13位定时器):模式0是一个13位定时器,可以用作定时器或计数器。在定时器模式下,它可以生成中断,定时范围为08191。在计数器模式下,它可以计数外部脉冲,计数器范围为08191。这种模式的特点是定时器/计数器的溢出标志位 TF0只有在定时器/计数器计满13位时才会置位。 模式1(16位定时器):模式1是一个16位定时器,也可以用作定时器或计数器。在定时器模式下,它可以生成中断,定时范围为065535。在计数器模式下,它可以计数外部脉冲,计数器范围为065535。这种模式的特点是定时器/计数器的溢出标志位TF1只有在定时器/计数器计满16位时才会置位。 模式2(8位自动重载定时器):模式2是一个8位自动重载定时器,只能用作定时器。在定时器模式下,它可以生成中断,定时范围为0~255。这种模式的特点是定时器的溢出标志位TF0会在定时器计满8位时置位,并且自动将定时器初值装载到计数器中。 模式3(16位自动重载定时器):模式3是一个16位自动重载定时器,只能用作定时器。在定时器模式下,它可以生成中断,定时范围为0~65535。这种模式的特点是定时器的溢出标志位TF1会在定时器计满16位时置位,并且自动将定时器初值装载到计数器中。 自动重载定时器是一种定时器模式,其特点是在定时器溢出后自动重新加载初值,从而实现循环定时的功能。自动重载定时器的好处在于可以避免手动重新设置定时器初值的繁琐操作,并且可以保证定时器的稳定性和精度。 在自动重载定时器模式下,当定时器计满计数器的位数(如8位或16位)后,会自动将定时器的初值重新装载到计数器中,从而实现循环定时的功能。在定时器工作期间,我们只需要通过设置定时器初值和选择定时器模式来控制定时器的行为,而不需要手动干预定时器计数器的值。 定时器在工作时需要设置一个初始值,用来指定定时器的计数范围和定时时长。在定时器开始工作时,定时器从这个初始值开始计数,直到计数值达到设定的上限,定时器就会触发中断或产生其他相关的操作。 通过设置定时器的初始值,可以灵活地控制定时器的定时时长,使定时器可以适应不同的应用场景和需求。例如,在一个需要定期进行数据采集的应用中,我们可以根据采集周期来设置定时器的初始值,以便精确地控制采集时间。

文档评论(0)

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

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

1亿VIP精品文档

相关文档