为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

第07课,精确定时1秒钟闪灯

2011-09-14 2页 pdf 41KB 11阅读

用户头像

is_460634

暂无简介

举报
第07课,精确定时1秒钟闪灯 第 7课,精确定时 1秒钟闪灯 这一课,我们将学习如何精确定时 1 秒钟闪灯。上节介绍过,要精确定时,必须使用 自装载方式。这里我们使用 T2 定时器,让它工作在 16bit 自动装载方式,这时,有另一个 位置专门装着 16位预装载值,T2溢出时,预装载值立即被置入。这就保证了精确定时。 但是,即使是 16位定时器,最长的溢出时间也就几十毫秒,要定时一秒,就需要一个 变量来保存溢出的次数,积累到了多少次之后,才执行一次操作。这样就可以累加到 1秒或 者更长的时间才做一次操作了。 T2定时器有个特殊的地方,它进...
第07课,精确定时1秒钟闪灯
第 7课,精确定时 1秒钟闪灯 这一课,我们将学习如何精确定时 1 秒钟闪灯。上节介绍过,要精确定时,必须使用 自装载方式。这里我们使用 T2 定时器,让它工作在 16bit 自动装载方式,这时,有另一个 位置专门装着 16位预装载值,T2溢出时,预装载值立即被置入。这就保证了精确定时。 但是,即使是 16位定时器,最长的溢出时间也就几十毫秒,要定时一秒,就需要一个 变量来保存溢出的次数,积累到了多少次之后,才执行一次操作。这样就可以累加到 1秒或 者更长的时间才做一次操作了。 T2定时器有个特殊的地方,它进入中断后,需要自己清除溢出标记,而 51的其他定时 器是自动清除的。请参考 51单片机相关书籍。 如果使用 T2定时器实现 1秒精确定时? 下面我们就来计算: 仿真器的晶振是 22118400HZ,每秒钟可以执行 1843200 个机器周期。而 T2 每次溢出 最多 65536个机器周期。我们尽量应该让溢出中断的次数最少,这样对主程序的干扰也就最 小。 选择每秒中断 24次 ,每次溢出 1843200/24=76800个机器周期,超出 65536,无效。 选择每秒中断 30次 ,每次溢出 1843200/30=61440个机器周期 选择每秒中断 32次 ,每次溢出 1843200/32=57600个机器周期 选择每秒中断 36次 ,每次溢出 1843200/36=51200个机器周期 选择每秒中断 40次 ,每次溢出 1843200/40=46080个机器周期 从上面可以看到我们可以选择方式有很多,但是最佳的是每秒中断 30 次,每次溢出 61440 个机器周期。也就是赋定时器 T2 初值 65536-61440=4096,换成十六进制就是 0x1000。 从上面的计算也可以看出晶振 2118400Hz 的好处,它可以整除的倍数多,要准确定时 非常方便。更常见的应用是在串口波特率上,使用 22118400HZ可以输出最多准确的标准波 特率。 请打开程序,如图: 我们在定时器服务函数里,设置了一个静态变量 t,静态变量的值在进入函数时是不会 被初始化的,而是保持上次的值。它用来计数定时器的溢出次数,也就是 T2中断函数进入 的次数,每溢出 30次,就控制一次 LED的反转显示。这时的时间就正好是 1秒,而且是精 确的 1秒!只与晶振的精度有关。 请编译,进入仿真,全速运行。可以看到,LED在亮一秒,灭一秒,不断循环闪烁。 这种精确定时,可以用在时钟的计算、显示上。 作业: 1.改为保持 1秒闪烁的同时,让 P11灯每 10秒钟闪烁一次。 2.改为保持 1秒闪烁的同时,让 P11灯亮 1秒停 5秒不断循环。
/
本文档为【第07课,精确定时1秒钟闪灯】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索