delay函数,C语言 delay啥意思?
delay函数,C语言 delay啥意思?详细介绍
本文目录一览: C语言中 delay 函数如何运用?
函数名: delay
功 能: 将程序的执行暂停一段时间(毫秒)
用 法: void delay(unsigned milliseconds);
程序例:
/* Emits a 440-Hz tone for 500 milliseconds */
#include
int main(void)
{
sound(440);
delay(500);
nosound();
return 0;
}
建议用sleep()函数。
它应该不是标准库函数,就是让程序停止执行一段时间,这段时间由delay(int )来决定
1、delay函数是一般自己定义的一个延时函数。2、C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
// 定义一个延时xms毫秒的延时函数void delay(unsigned int xms) // xms代表需要延时的毫秒数{ unsigned int x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--);}
51单片机C语言中delay函数是怎么定义和使用的?
delay函数是一般自己定义的一个延时函数。
C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
// 定义一个延时xms毫秒的延时函数void delay(unsigned int xms) // xms代表需要延时的毫秒数{ unsigned int x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--);}
这是一个延时函数()里的unsigned int a是一个形参,为int型变量最 大值为32767;{}里的unsigned int i和()里的一样 只是变量的名称不同,为i;while就是循环语句 如果他后面的()里的量不为零就执行他{}里的内容,一旦为零就跳出该语句。for(i=0;i<600;i++);就是把i定为零,如果i在for里小于600就跳到第三步i++(也就是i自增1);然后i=1但他还是小于600,接着就到第三步。。。。599次之后i=600,600就不小于600,这时就跳出for。while后的()如果为零就跳出while
C的话其实时间没有办法完全定性地计算的
如果非得精确的话只能使用定时器了,或者汇编的也行
不过时间要求精度不是很高的话使用下面的代码就行了
当时使用示波器把时间完全调准的,65536ms范围内还是比较准的,已经可以满足通常的要求了:
#include "reg51.h" //头文件包含
//宏定义
#define uint unsigned int
#define uchar unsigned char
void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz)
{
uint ti;
while(ms--)
{
for(ti=0;ti<112;ti++){}//112
}
}
调用方式如下:
delay(400); //开机延时400ms
够详细了吧?!
这是个延迟函数,delay 括号中的表达式是定义的无符号的整形变量,它是形参,你只要知道它是定义一个变量既可,它的值由main 函数传递过来,a的值有了,就进入了while 循环。不知你是否学过c语言,如果没有,就看看while 循环。
假如说执行for(i = 0; i < 600; i++); 要1s,那a决定了执行1s的次数,这个延时就是a秒,懂了吗?
不过12m晶振的话,大家一般是for(i = 0; i < 114; i++); 执行这句要1ms
定义一个延时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=[(延时值-1.75)*12/Ms-15]/4
扩展资料1、在C51中进行精确的延时子程序设计时,尽量不要或少在延时子程序中定义局部变量,所有的延时子程序中变量通过有参函数传递。
2、在延时子程序设计时,采用do…while,结构做循环体要比for结构做循环体好。
3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。
单片机c语言中delay()函数的头文件是什么?
delay( )函数并不是标准库函数,是编程人员自定义的一个函数(通常是延时函数),所以其并不包含在其他头文件中。
下面给出51单片机中一个常见的延时函数。
// 延时z毫秒的延时函数void delay(unsigned int z){ unsigned int i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); // 利用无实际意义的for循环来进行延时}
没有一个软件自带头文件是专门有delay这种函数的,delay就是延时,一般都是在自定义的头文件里,或者直接在主函数所在的文件定义
delay 一般是自己写的软件延迟函数!
51单片机是自己写延迟函数
delay函数是一个自己定义的延时函数,C语言定义延时函数主要通过无意义指令的执行来达到延时的目,并没有一个软件自带头文件专门有delay这个函数的。
单片机c语言中delay()的使用:
voidDelay10us(ucharMs)
{
uchardatai;
for(;Ms》0;Ms--)
for(i=26;i》0;i--);
}
i=[(延时值-1.75)*12/Ms-15]/4
扩展资料
把delay(10000)改为100000
voidmain()
{
inti;
charstr[]="whatareyoufuckingdoing?";
intlen=sizeof(str)/sizeof(char);
for(i=0;i
<len;i++)
{
if(str[i]!=''&&str[i]!='\0')
{
delay(100000);
}
delay(100000);
printf("%c",str[i]);
}
getch();
}
</len;i++)
C语言 delay啥意思?
delay(1000 )是早期TC的一个延时函数,可以使得你的代码暂停一定时间(毫秒)。
相同的函数包括在windows中的sleep( 1000 );
对于任何一个延迟函数,都要注意用在什么芯片上的。每种芯片的运算速度是不一样的。最好找到一个相对应于硬件的编译软件来运行你的执行程序。另外:tc并不适合编译应用于单片机的程序。就像mcs-51系列单片机常用keil
c或者维幅。msp430系列常用iar软件一样。
我想,你的delay(1000)要的正确效果,在tc里面是看不出来的,tc只能告诉你,你的程序没有语法错误。
看一个延时程序最简单的就是在合适的编译器里面利用程序中断,只要对应好芯片,时间都比较准确。
或者直接烧进芯片里,实际运行感受一下大概。
delay是延时函数,delay(2000)表示延迟2000ms,即2s。
单片机中delay函数精确延时多少ms?
单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的。
如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。
如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。
最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。
扩展资料
单片机C语言程序中延时函数delay的原理是:仅仅执行一些,没有实质性影响的所谓“无意义指令”,比如做比大小啊,做某个int的自加运算啊之类的。
单片机的有些程序需要调用延时程序,合理的安排循环次数以及空操作的个数方法:用汇编的话就根据你的当前晶振频率去推算你的指令周期,然后结合需要延迟的时间。
编写延迟程序,用C的话还是要看最后生成的汇编码是什么样的了。最简单的方法就是写好程序以后再编译器里软仿真看时间。
单片机C语言延时需注意的问题:
标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。
在keil C51中,直接调用库函数:
#include // 声明了void _nop_(void);
_nop_(); // 产生一条NOP指令
作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。
python延时函数
python延时函数是什么?一起来看看吧!
python延时函数即python time sleep() 函数,推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。该函数没有返回值,sleep()方法语法:time.sleep(t),t表示推迟执行的秒数。
函数接收一个指定函数fn,一个延迟时间ms和指定函数的参数*args,在指定延迟后,返回指定函数fn的调用结果。函数使用sleep()方法来进行延迟,然后调用指定函数。delay函数在调用的时候,可以使用lambda表达式的匿名函数,也可以使用一般函数。需要注意的是当fn存在关键字参数时会发生异常。
例如:
#!/usr/bin/python import?time ? print?"Start?:?%s"?%?time.ctime() time.sleep(?5?) print?"End?:?%s"?%?time.ctime() Start?:?Tue?Feb?17?10:19:18?2013 End?:?Tue?Feb?17?10:19:23?2013 from?time?import?sleepdef?delay(fn,?ms,?*args): ??sleep(ms?/?1000) ??return?fn(*args)#?EXAMPLESdelay( ??lambda?x:?print(x), ??1000, ??'later')?#?prints?'later'?after?one?second
Arduino的delay()函数
delay(unsigned long) 使程序暂停执行指定的毫秒时间。
使用delay()函数有很大的缺点。因为在delay函数运行期间,程序的大多数其他的事情都会停止,等待delay函数结束。比如传感器数据的读取、数学计算或pin操作都无法进行。
除非Arduino程序非常简单,通常应该避免使用delay()来计时超过10毫秒的事件。
一个办法是使用轮询的机制,使用millis()函数查询时间来计时。
delay() c语言延迟函数
下面是delay
函数原型:
原型:
void
Delay(unsigned
int
nDelay)
{
unsigned
int
i,j,k;
for
(
i=0;i
<ndelay;i++
)
for
(
j=0;j<6144;j++
)
k++;
}
用法:#include
功能:短暂延时
说明:延时msec*4毫秒所以,delay的延迟时间是和你的cpu时钟周期相关的
</ndelay;i++
c语言 delay函数
delay函数
功
能:
将程序的执行暂停一段时间(毫秒)
(该函数是TC下特有的函数,VC下应使用Sleep()函数)
用
法:
void
delay(unsigned
milliseconds);
程序例:
/*
Emits
a
440-Hz
tone
for
500
milliseconds
*/
#include
int
main(void)
{
sound(440);
delay(500);
nosound();
return
0;
}
单片机c语言中delay()函数的头文件是什么?
没有一个软件自带头文件是专门有delay这种函数的,delay就是延时,一般都是在自定义的头文件里,或者直接在主函数所在的文件定义
这是个延迟函数,delay
括号中的表达式是定义的无符号的整形变量,它是形参,你只要知道它是定义一个变量既可,它的值由main
函数传递过来,a的值有了,就进入了while
循环。不知你是否学过c语言,如果没有,就看看while
循环。
delay(
)函数并百不是标准库函数,是编程人员自定义度的一个函数(通常是延时函数),所以其并不包含问在其他头文件中。
下面给出51单片机中一答个常见的延时函内数。
// 延时z毫秒的延时函数
void delay(unsigned int z)
{
unsigned int i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--); // 利用无实际意义的for循环来进容行延时
}