我是靠谱客的博主 英俊季节,最近开发中收集的这篇文章主要介绍c语言不用死等的延时函数,matlab延时函数怎么写,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. c语言延时函数delay,怎么算延时

下面是delay 函延迟函数里执行的都是空语句,也就是说通过循环执行空语句来达到延迟的目的.每执行一条语句,即使是空语句都要耗费电脑一些处理时间的,就是因为这个,在延迟函数里写一些无关紧要的东西,用来浪费电脑处理时间,从而达到延迟目的。数原型:

原型:

void Delay(unsigned int nDelay)

{

unsigned int i,j,k;

for ( i=0;i

for ( j=0;j<6144;j++ )

k++;

}

用法:#include

功能:短暂延时

说明:延时msec*4毫秒所以,delay的延迟时间是和你的cpu时钟周期相关的。

2. C语言delay的延时函数怎么写

回答这个问题前提需要搞清楚:

1.你的执行文件在那里运行?

2.你要延时是否“死等”,还是可以切换到其他任务?

-----------------------------------------------

如果你只是学习c语言,写个小函数玩玩,可以如下:

void delay(int time)

{

for(;time>0;time--)

{

nop;//可写任何无意义的操作

}

}

死等型的延时,时间根据指令执行速度不同而不同!!!!

3. delay() c语言延迟函数

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--);

}

4. 单片机中用写delay函数做延时和用定时器做延时有什么区别

利用循环处理的方式实现的延时,并不精确。

1、当中断发生时,CPU被打断先执行中断服务。导致执行时间变长。

2、使用高级语言时,编译的结果受优化等级等多方面因素干扰,难以计算。

3、在有MMU和Cache的MCU中,指令的执行速度还会受到缓存的影响。

利用定时器延时:

1、因为定时器累加与CPU无关,即使中断,仍然会保持计数。不受上述问题影响

2、缺点需要占用定时器资源。

3、功耗也会高一些

5. 这延时函数怎么理解void Delay1ms

与单片机的计算速度有关,主要看cpu频率

假如你的单片机cpu频率为8Mhz

则该单片机大约每秒进行8 000 000次的运算,

这个delay函数就是通过i,j,k的自减运算来达到延迟效果

一直减到ijk都为0才执行下一段函数

delay(10)就是让单片机进行 i(10) * j(10) * k(50)=5000次的自减运算,时间大约为5000/8 000 000=0.625ms

自己可以根据这个算法来简单测算出延迟时间

6. 请求单片机delay延时函数

void delay1(unsigned int j)

{unsigned char i;

do{for(i=0;i<2;i++);

j--;

asm("nop");}

while(j);

}

这是us延时,有误差,j的值越大相对误差越小。不过相信误差应该在你的可接受范围内。

void delay1(unsigned int j)

{unsigned int i;

do{for(i=0;i<2853;i++);

j--;}

while(j);

}

这是ms延时,有误差,j的值越大相对误差越小。不过相信误差应该在你的可接受范围内。

你可以试试,不行我再给你调

7. 怎么写段单片机延时函数

1、首先分析您的程序,

void delay()

{

int i;

if(1 == TF0)//if(TF0==1),查询定时器溢出标志位

{

TF0=0;

i=10000;//定时溢出时给i赋值1000

TH0=0xDC;TL0=0x00;

i--;//i=999,如果还没有减到0时定时器又溢出,则i永远不会减到0!!!!所以您的这段程序不应该行不通!!

}

while(1)

{

if(i==0)

break ;

}

}

2、建议做法

(1)定义一个全局变量用于作定时计数如unsigned char n;

(2)定时器采用以某一时间基准(10ms)中断方式,每中断一次中断处理程序里n++;

(3)在延时函数中对n进行操作,如延时1s即1000ms则:

void delay_1s()

{

while(n

8. 请求单片机delay延时函数

void delay1(unsigned int j){unsigned char i;do{for(i=0;i<2;i++);j--;asm("nop");}while(j);}这是us延时,有误差,j的值越大相对误差越小。

不过相信误差应该在你的可接受范围内。void delay1(unsigned int j){unsigned int i;do{for(i=0;i<2853;i++);j--;}while(j);}这是ms延时,有误差,j的值越大相对误差越小。

不过相信误差应该在你的可接受范围内。你可以试试,不行我再给你调。

60d5d2c32818add7

转载请注明出处育才学习网 » matlab延时函数怎么写

最后

以上就是英俊季节为你收集整理的c语言不用死等的延时函数,matlab延时函数怎么写的全部内容,希望文章能够帮你解决c语言不用死等的延时函数,matlab延时函数怎么写所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部