延时时间的计算与单片机的晶振频率有关。若晶振频率为12Mhz,那么单片机每震动一次所需要的时间是1/12M s。那么再来看看单片机执行一次自减所需要的振动次数是96次,假如我们对时间要求不是特别精确的话,可以约等于100来计算。现在通过上面两个数据可以得出:单片机每执行一次自减所需要的时间是1/12M *100(s),即1/120000 s,逆向计算一下,每1ms需要自减多少次?120次对吧。所以一个简单的延时功能就诞生了,我们只需要自减120次,就可以延时1ms,如果我们要延时50ms呢,那就自减50*120=6000次。那么在程序上如何表达呢?我们可以用两套for循环
成都创新互联公司成立于2013年,我们提供高端重庆网站建设公司、成都网站制作、网站设计、网站定制、成都营销网站建设、成都小程序开发、微信公众号开发、seo优化排名服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都食品包装袋企业提供源源不断的流量和订单咨询。
void delay(int i){
int x,y;
for(x=i;x0;x--){
for(y=120;y0;y--)
}
}
参数 i 代表该函数延时多少ms
C语言的延迟函数一般是利用无意义程序运行来控制时间从而达到延时的目的
举个例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
这是延时x毫秒的for循环语句。
值得注意的是记得最后的;一定得记得写。
1、delay函数是一般自己定义的一个延时函数。
2、C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
// 定义一个延时xms毫秒的延时函数
void delay(unsigned int xms) // xms代表需要延时的毫秒数
{
unsigned int x,y;
for(x=xms;x0;x--)
for(y=110;y0;y--);
}
学过汇编你就会知道,每条指令都占一定的时间(或者机器周期)的,如果你让机器什么都不做,即空指令的话,机器就会延时,然后你在计算好每次延时到底有多长,外面套一个循环(或者多重循环),根据你想要的延时时间即可计算出来循环的次数,延时函数基本上都是这种原理,它的参数就是用来控制循环次数的。