52单片机C语言中“Delay”是什么意思,怎么用

52单片机C语言中“Delay”是什么意思,怎么用,第1张

一般延时1ms的程序是:

void Delay(uint x)

{

uchar i;

while(x--)

{

for(i=120;i>0;i--);

}

}

那么当你在别的函数中用到Delay(10000);就是延时10000ms,也就是10S

定义一个延时xms毫秒的延时函数

void delay(unsigned int xms) // xms代表需要延时的毫秒数

{

unsigned int x,y;

for(x=xms;x》0;x--)

for(y=110;y》0;y--);

}

使用:

void Delay10us(uchar Ms)

{

uchar data i;

for(;Ms》0;Ms--)

for(i=26;i》0;i--);

}

i=[(延时值-175)12/Ms-15]/4

扩展资料

1、在C51中进行精确的延时子程序设计时,尽量不要或少在延时子程序中定义局部变量,所有的延时子程序中变量通过有参函数传递。

2、在延时子程序设计时,采用do…while,结构做循环体要比for结构做循环体好。

3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。

Sleep函数:功 能: 执行挂起一段时间用 法: unsigned sleep(unsigned seconds);注意:在VC中使用带上头文件#include <windowsh> 在VC中,Sleep中的第一个英文字符为大写的"S" ,在标准C中是sleep, 不要大写,简单的说VC用Sleep, 别的一律使用sleep 在VC中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是Sleep(1000); 在Linux下,sleep()里面的单位是秒,而不是毫秒。 示例: #include <windowsh> int main(){ int a; a=1000; Sleep(a); return 0; }  usleep函数:功能: usleep功能把进程挂起一段时间, 单位是微秒us(百万分之一秒)。 delay函数: 功 能: 将程序的执行暂停一段时间,单位是毫秒ms(千分之一秒)用 法: void delay(unsigned milliseconds);示例:#include<dosh>int main(void){ sound(440); delay(500); nosound(); return 0; }delay()是循环等待,该进程还在运行,占用处理器。sleep()不同,它会被挂起,把处理器让给其他的进程。

#include<dosh>

void

fun()

{

delay(10000);

}

调用系统的延迟函数delay,该函数的延时单位是毫秒,所以括号内写10000毫秒,即延迟10秒

那样子你的调用系统的API来获得调用此函数之前的系统时间,还有调用此函数返回之后的系统时间进行比较。

#include <windowsh>

#include <stdioh>

voidmain()

{

SYSTEMTIME sys;

GetLocalTime( &sys );

int start=syswMilliseconds;//获取开始时的毫秒数

//下面调用你的函数

delay(uint型变量);//这里面的参数你必须自己看着办

GetLocalTime( &sys );

int end=syswMilliseconds;//获取调用delay函数之后的秒数

printf("调用delay函数消耗了%d毫秒!\n",end-start);

printf("注意:此程序只能处理1秒以内的延迟毫秒数!");

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=125;y>0;y--);

}

单片机的C语言关于延时函数主要有两种

一种是用for循环,通过单片机执行空指令达到延时的目的

如:

for(i=0;i<100;i++)

{

;

}

这个简单的语句会执行100次空指令

每一次指令的时间可以大概确定

因此这个是最简单的延时函数

第二种是通过定时器的方式来实现

定时器是通过对单片机的晶振进行计数

然后在定时器中断服务函数里面实现定时时间的计算及设置

51单片机的定时器0中断服务函数为

void

time0()

interrupt

1

{

}

延时时间的计算与单片机的晶振频率有关。若晶振频率为12Mhz,那么单片机每震动一次所需要的时间是1/12M s。那么再来看看单片机执行一次自减所需要的振动次数是96次,假如我们对时间要求不是特别精确的话,可以约等于100来计算。现在通过上面两个数据可以得出:单片机每执行一次自减所需要的时间是1/12M 100(s),即1/120000 s,逆向计算一下,每1ms需要自减多少次?120次对吧。所以一个简单的延时功能就诞生了,我们只需要自减120次,就可以延时1ms,如果我们要延时50ms呢,那就自减50120=6000次。那么在程序上如何表达呢?我们可以用两套for循环

void delay(int i){

int x,y;

for(x=i;x>0;x--){

for(y=120;y>0;y--)

}

}

参数 i 代表该函数延时多少ms

以上就是关于52单片机C语言中“Delay”是什么意思,怎么用全部的内容,包括:52单片机C语言中“Delay”是什么意思,怎么用、51单片机C语言中delay函数是怎么定义和使用的、c语言有个可以使程序延时的语句是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9695388.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存