delay函数的用法及声明,如何用单片机的delay实现延时?
delay函数的用法及声明,如何用单片机的delay实现延时?详细介绍
本文目录一览: 51单片机C语言中delay函数是怎么定义和使用的
void delay(char i)
{
char j =0;
for(i=0;i<255;i++)
for(;i<255;j++)
}
void main()
{
delay(100);
}
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--);
}
51单片机C语言中delay函数是怎么定义和使用的?
这是一个延时函数()里的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
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--);}
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后面的()当中的a,是调用函数时,传递过来的变量,此值越大,延迟的时间就越长。
定义一个延时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的原理是:仅仅执行一些,没有实质性影响的所谓“无意义指令”,比如做比大小啊,做某个int的自加运算啊之类的。
单片机的有些程序需要调用延时程序,合理的安排循环次数以及空操作的个数方法:用汇编的话就根据你的当前晶振频率去推算你的指令周期,然后结合需要延迟的时间。
编写延迟程序,用C的话还是要看最后生成的汇编码是什么样的了。最简单的方法就是写好程序以后再编译器里软仿真看时间。
单片机C语言延时需注意的问题:
标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。
在keil C51中,直接调用库函数:
#include // 声明了void _nop_(void);
_nop_(); // 产生一条NOP指令
作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。
51单片机延时函数声明和调用
声明很简单,例如延时 delay( x); 这是调用的,声明就在这个前面加void delay( unsigned char x);
单片机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++)
52单片机C语言中“Delay”是什么意思,怎么用?
一般延时1ms的程序是:void Delay(uint x){ uchar i; while(x--) { for(i=120;i>0;i--); }} 那么当你在别的函数中用到Delay(10000);就是延时10000ms,也就是10S
系统动力学delay3i函数的用法
系统动力学delay3i函数的用法如下:1、delay函数是一般自己定义的一个延时函数。可用delay3i函数延长时间。2、C语言定义延时函数主要通过无意义指令的执行来达到延时的目的,delay3i函数与之目的一样是为延时。
delayfixed函数怎么用
1、在程序中引入delayfixed函数的定义和声明。在需要延迟执行的地方调用delayfixed函数。2、在delayfixed函数中设置需要延迟执行的代码和延迟时间。3、编译并运行程序,延迟时间到达后,delayfixed函数会自动执行设置的代码。4、编译并运行程序,延迟时间到达后,delayfixed函数会自动执行设置的代码。
52单片机C语言中Delay是什么意思?怎么用?
一般延时1ms的程序是:
void Delay(uint x)
{
uchar i;
while(x--)
{
for(i=120;i>0;i--);
}
}
那么当你在别的函数中用到Delay(10000);就是延时10000ms,也就是10S
举个例子吧
void delay(uint z)
{
uint x;
for(x=z;y>0;y--);
}
单片机一个时钟周期就执行一个指令,如上面的for循环中,将会执行z次自减计算后跳出,即当你调用该函数后,执行这个函数至少要耗掉z个时钟周期,即起到了延时的作用。至于具体时间是多长,与你单片机、时钟信号有关。希望能帮到你。
delay是延时的意思
delay是延时的意思,delay(n)是延时n个时间单位,至于一个时间单位是多少,这需要你的delay函数决定的,