c语言延时的计算?

void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=110;j>0;j
晶振为12MHZ

第1个回答  2010-05-29
这个跟的系统频率有关系。看看你的晶振是多少。另外还跟指令集有关系。
精确的时间你可以反汇编一下看看有多少条指令,根据指令周期算算延时时间。
第2个回答  2010-05-29
软延时的时间不太好精确计算的,这跟你所用的CPU有关,不同的CPU执行一条指令所用的时钟周期都不完全一样。你需要先汇编出来,看系统要到底要执行多少条指令,然后根据你CPU执行这样一条指令的时间就可以计算出来...
第3个回答  2010-05-29
可以在C文件中通过使用带_NOP_( )语句的函数实现,定义一系列不同的延时函数,如Delay10us( )、Delay25us( )、Delay40us( )等存放在一个自定义的C文件中,需要时在主程序中直接调用。如延时10 μs的延时函数可编写如下:

void Delay10us( ) {
_NOP_( );
_NOP_( );
_NOP_( );
_NOP_( );
_NOP_( );
_NOP_( );
}

Delay10us( )函数中共用了6个_NOP_( )语句,每个语句执行时间为1 μs。主函数调用Delay10us( )时,先执行一个LCALL指令(2 μs),然后执行6个_NOP_( )语句(6 μs),最后执行了一个RET指令(2 μs),所以执行上述函数时共需要10 μs。 可以把这一函数当作基本延时函数,在其他函数中调用。

p.s.这不是我写的,但是应该对你有帮助吧本回答被网友采纳

C语言中延时时间问题
执行一条命令的时间是1除以频率,然后你这里延时的时间就是(99*249+2)乘以前面的时间,,每台电脑都不一样

C语言delay延时时间怎么算,说的详细点谢谢
DelayMS(300)表示希望系统delay 300毫秒,系统有自己的RTC,根据硬件的晶振(Hz)可以计算出一次振荡大约多少耗时,这样就能大约算出1ms需要多少次振荡;简单比喻一次振荡需要1us,那1ms就是1000次振荡,300ms就是300x1000次振荡,这样就能大概的计算出300ms delay;这得看你的CPU运行一条指令得多久,像单片...

C语言delay函数延时计算
C语言delay函数延时计算源代码如下:include "stdlib.h"void delay(){ time_t start,end;start=time(null);unchar i;while(z--){ for(i=0;i<121;i++);} end=time(null);printf("%f",difftime(end,start));}

C语言这样写的延时函数我不大懂,帮我分析一下,谢谢。
就是循环做减法,让N自减1 ,然后,再自减1,直到为0,才跳出循环。实际是就拖延时间。这个在不同机器上的延时是不同的。在快的机器上延时短,慢的机器上延时长。要准确延时,还得调用实时时钟才行。

请问下面的C语言延时函数是如何计算延时时间的?for循环中的四个nop是...
一个nop为1个指令周期,通过nop指令可以产生一定的延迟,但是对于快速的CPU来说效果不明显,因此可以多写几个,便可以多延迟几个时钟(具体应该说是一个指令占用了3个时钟脉冲);所以,一个for循环会执行4*250个指令周期,那么总共延时4*250*ms个指令周期~~...

c语言延时的计算?
算法是这样的:这个用编译软件,如keil,编译通过之后,进入软件调试功能,就可以测出来是延时多少秒。具体我帮你调试过了,如果单片机接12mhz晶振的话,这个是延时0.2秒的子程序。你调用一次delay();就延时0.2秒。请选为最佳答案哦亲。

怎样用C语言制作延时输出程序
延时:include void wait ( int seconds ){ clock_t endwait;endwait = clock () + seconds * CLOCKS_PER_SEC ;while (clock() < endwait) {} } --- 调用:(void) wait (1); \/\/延时 1 秒 (void) wait (1800); \/\/ 延时 1800 秒 就是 30 分钟 ...

单片机C语言中,怎么通过循环次数计算延迟函数的延迟时间?
首先你要知道一个指令周期是几秒 算法是1\/(晶振频率除以12)然后你要知道循环究竟执行了几个指令周期 你可以用keil里在线反汇编命令看看你的循环编译成机器语言后到底是几个指令周期 这样就知道了延迟时间 当然你取近似值也可以的 比如 for(i=0,i<255,i++){x=2} 这里x=2是一个指令周期 而...

C语言中怎么进行延时?
在C语言中,可以使用delay函数来实现程序的延时功能。delay函数可以使程序暂停执行一段时间,定义一个delay函数,函数的参数为延时的时间,单位为毫秒。函数的实现如e=clock();\/\/获取当前时间es);\/\/当当前时间减去开始时间小于延时时间时,程序处于等待状态,在程序中调用delay函数,并传入需要延时的时间,...

如何用c语言实现单片机延时?
最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响。500ms延时子程序程序:(晶振12MHz,一个机器周期1us。)void delay500ms(void){ unsigned char i,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);} ...

相似回答