51单片机C语言编程中延时程序的研究

时间:2022-06-04 09:12:30

51单片机C语言编程中延时程序的研究

【摘要】单片机中,延时程序是在各种程序研究中最常用的子程序,但是很多人只知道一两种方法,本文笔者在这里研究下多种方法,并且进行比较,探讨下不同应用中最好的方法,起到抛砖引玉的作用。

【关键词】单片机;延时程序

接触单片机有一年之久,从基础知识了解开始,到流水灯、数码管动静态显示,键盘到液晶等几个基本的模块,编了一些基本的小程序,发现其中最常用的延时程序用C语言编写也是千变万化的,不同的程序,不同的用途,精确度不一样,延时程序也需要有改变。下面就对我所知道的延时的方法谈下自己的见解。

总的延时方法通常有两种:一种为软件延时,通常采用循环的形式进行;另外一种为硬件延时,用到定时器/计数器,这种方法可以提高CPU的工作效率,并且能相对精确延时。

一、软件延时与时间计算

软件延时方式精确度不是很高,但是基本时间可以控制,并且移植性很好。

2.需要多种延时时间。还是8个灯做成流水灯,但是要求第一个灯亮1S,第2个灯亮2S,第三个灯亮3S……最后一个灯亮8S。

3.时间的确定。很多朋友看完我上面讲个两种延时方法可能会说,这样是方便了,但是上面的时间如何确定呢?你的时间确定图怎么来的?方法很简单,利用keil强大的功能实现。比如1S延时

另外还可以用示波器测试时间,需要外接示波器,用proteus画完连接图,接上示波器,再调用写好程序的hex,就可以很清楚的看到延时时间。下面为延时20ms图。

同时还可以用反汇编工具计算延时时间,汇编时间是很精确的,便于计算的。有兴趣的朋友也可以自己上网搜索这两种方法。对于初学的朋友,我建议还是用这种keil本身的工具比较方便。

二、用定时器/计数器实现精确定时

在很多情况下,需要我们精确定时,那么我们就不能用前面讲的调用小的延时子程序delay()来完成。所以就要考虑用精确的定时方式:定时器/计数器。

以上我介绍了对于写延时程序自己的一些肤浅的见解,在以后的学习中还需要进一步提高。粗略延时用基本的delay(),精确延时用定时/计数器。

参考文献:

[1]周坚.单片机C语言轻松入门[M].北京航空航天大学出版社,2006-07.

上一篇:任务驱动法在计算机教学中的应用探究 下一篇:浅谈信息技术与语文学科的整合