c语言delay函数意思 c++ delay函数

c语言中,delay的意思delay 就是个延时函数,看名字延时单位是 ms
就是让电机 motor(r,f,40)这个状态下 800ms
51单片机C语言中delay函数是怎么定义和使用的?定义一个延时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、在延时子程序设计时,要进行循环体嵌套时 , 采用先内循环,再减减比先减减,再内循环要好 。
单片机delay单位时间的含义是什么?单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的 。
如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间 , 但是一般精精确延时是没法用循环语句实现的 。
如果想精确延时,一般需要用到定时器,延时时间与晶振有关系 , 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振 。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时 。本程序中假设使用频率为12 MHz的晶振 。
最长的延时时间可达216=65 536 μs 。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期) 。
扩展资料
单片机C语言程序中延时函数delay的原理是:仅仅执行一些,没有实质性影响的所谓“无意义指令”,比如做比大小?。瞿掣鰅nt的自加运算啊之类的 。
单片机的有些程序需要调用延时程序,合理的安排循环次数以及空操作的个数方法:用汇编的话就根据你的当前晶振频率去推算你的指令周期,然后结合需要延迟的时间 。
编写延迟程序,用C的话还是要看最后生成的汇编码是什么样的了 。最简单的方法就是写好程序以后再编译器里软仿真看时间 。
单片机C语言延时需注意的问题:
标准的C语言中没有空语句 。但在单片机的C语言编程中 , 经常需要用几个空指令产生短延时的效果 。这在汇编语言中很容易实现 , 写几个nop就行了 。
在keil C51中,直接调用库函数:
#include // 声明了void _nop_(void);
_nop_(); // 产生一条NOP指令
作用:对于延时很短的 , 要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒 。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS 。对于延时比较长的 , 要求在大于10us,采用C51中的循环语句来实现 。
C语言中 delay 函数如何运用?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--);
}
c语言delay函数会造成什么后果C语言中的delay函数是一个简单的延迟程序,它通过循环来浪费CPU时间,使程序暂停一段时间 。虽然这个函数在某些特定情况下可能会有用,但是它也有一些缺点和副作用:

推荐阅读