新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
单片机的C语言关于延时函数主要有两种
创新互联是一家专注于成都做网站、网站设计与策划设计,邵原网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:邵原等地区。邵原做网站价格咨询:18980820575
一种是用for循环,通过单片机执行空指令达到延时的目的
如:
for(i=0;i100;i++)
{
;
}
这个简单的语句会执行100次空指令
每一次指令的时间可以大概确定
因此这个是最简单的延时函数
第二种是通过定时器的方式来实现
定时器是通过对单片机的晶振进行计数
然后在定时器中断服务函数里面实现定时时间的计算及设置
51单片机的定时器0中断服务函数为
void
time0()
interrupt
1
{
...
}
这个是和你机器的运算速度有关的
你要计算出这个函数用了多少时间就要用时间函数,我很久没用了。
#include "stdlib.h"
void delay()
{
time_t start,end;
start=time(null);
unchar i;
while(z--)
{
for(i=0;i121;i++);
}
end=time(null);
printf("%f",difftime(end,start));
}
//time_t是在头文件中定义的,可能是个结构体类型里面的成员定义了一些时间的单位,如年、月、日。在这里调用这个结构体定义2个变量;
//start=time(null);
将其中一个变量赋值。它的值等于当前的系统时间
//end=time(null);
在程序结束的时候再给另一个变量赋值,值等于当前的系统时间。
//difftime(end,start)
函数difftime();是double类型,用来计算运行的时间,用第一个参数的时间减去第二个参数的时间,得到的值就是运行用了多少时间。单位为秒
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--);
}
延时时间的计算与单片机的晶振频率有关。若晶振频率为12Mhz,那么单片机每震动一次所需要的时间是1/12M s。那么再来看看单片机执行一次自减所需要的振动次数是96次,假如我们对时间要求不是特别精确的话,可以约等于100来计算。现在通过上面两个数据可以得出:单片机每执行一次自减所需要的时间是1/12M *100(s),即1/120000 s,逆向计算一下,每1ms需要自减多少次?120次对吧。所以一个简单的延时功能就诞生了,我们只需要自减120次,就可以延时1ms,如果我们要延时50ms呢,那就自减50*120=6000次。那么在程序上如何表达呢?我们可以用两套for循环
void delay(int i){
int x,y;
for(x=i;x0;x--){
for(y=120;y0;y--)
}
}
参数 i 代表该函数延时多少ms