推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

单片机c51教程--精确定时1秒钟闪灯

更新时间:2019-08-31 08:23:38 大小:65K 上传用户:杨义查看TA发布的资源 标签:单片机 下载积分:0分 评价赚积分 (如何评价?) 收藏 评论(1) 举报

资料介绍

文档为单片机c51教程--精确定时1秒钟闪灯总结文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,,

部分文件列表

文件名 大小
单片机c51教程--精确定时1秒钟闪灯.pdf 65K

部分页面预览

(完整内容请下载后查看)
7 课,精确定时 1 秒钟闪灯  
这一课,我们将学习如何精确定时 1 秒钟闪灯。上节介绍过,要精确定时,必须使用  
自装载方式。这里我们使用 T2 定时器,让它工作在 16bit 自动装载方式,这时,有另一  
位置专门装着 16 位预装载值,T2 溢出时,预装载值立即被置入。这就保证了精确定时。  
但是,即使是 16 位定时器,最长的溢出时间也就几十毫秒,要定时一秒,就需要一个  
变量来保存溢出的次数,积累到了多少次之后,才执行一次操作。这样就可以累加到 1 秒  
者更长的时间才做一次操作了。  
T2 定时器有个特殊的地方,它进入中断后,需要自己清除溢出标记,而 51 的其他定时  
器是自动清除的。请参考 51 单片机相关书籍。  
如果使用 T2 定时器实现 1 秒精确定时?  
下面我们就来计算:  
仿真器的晶振是 11.0892MHZ,每秒钟可以执行 921600 个机器周期。而 T2 每次溢出  
最多 65536 个机器周期。我们尽量应该让溢出中断的次数最少,这样对主程序的干扰也就  
小。  
选择每秒中断 24 次 ,每次溢出 921600/24 个机器周期,超出 65536,无效。  
选择每秒中断 30 次 ,每次溢出 921600/30 个机器周期  
选择每秒中断 32 次 ,每次溢出 921600/32 个机器周期  
选择每秒中断 36 次 ,每次溢出 921600/36 个机器周期  
选择每秒中断 40 次 ,每次溢出 921600/40 个机器周期  
从上面可以看到我们可以选择方式有很多,但是最佳的是每秒中断 15 次,每次溢出  
921600/15 个机器周期。也就是赋定时器 T2 初值 65536921600/15,换成十六进制就是  
从上面的计算也可以看出晶振 11.0292MHz 的好处,它可以整除的倍数多,要准确定时  
非常方便。更常见的应用是在串口波特率上,使用 11.0592MHZ 可以输出最多准确的标准  
特率。  
我们在定时器服务函数里,设置了一个静态变量 t,静态变量的值在进入函数时是不会  
被初始化的,而是保持上次的值。它用来计数定时器的溢出次数,也就是 T2 中断函数进  
入的次数,每溢出 15 次,就控制一次 LED 的反转显示。这时的时间就正好是 1 秒,而  
且是精确的 1 秒!只与晶振的精度有关。  
请编译,进入仿真,全速运行。可以看到,LED 在亮一秒,灭一秒,不断循环闪烁。  
这种精确定时,可以用在时钟的计算、显示上。  
作业:  
1.改为保持 1 秒闪烁的同时,让 P11 灯每 10 秒钟闪烁一次。  
2.改为保持 1 秒闪烁的同时,让 P11 灯亮 1 秒停 5 秒不断循环。  

全部评论(1)