1,C语言延时程序中延时时间是如何计算出来的

调用函数 sleep(1) 就可以延时1秒,这个函数会自动处理时间
首先加个头文件 #include "windows.h" 然后在你要延时的地方调用:Sleep(1000);一千毫秒就是一秒了,注意Sleep的S是大写。

C语言延时程序中延时时间是如何计算出来的

2,void delay1uint x i forixi0i 延时多少

void delay(uint t)//参数是无符号整形,时间不可能为负数 register uint bt;//定义无符号整形,放在寄存器里,存取速度较快,平时都是放在内存里for(;t;t--) //通过执行佛如循环来消耗时间for(bt=0;bt<255;bt++);}
如:delayms(5);则耗时为5*120个指令周期,如果你的指令周期就是你的系统时钟(12000000hz)那么时间为1/12000000*5*120 这只能是大概的算。不过应该能满足你的延时要求了。精准的话建议用汇编

void delay1uint x  i forixi0i  延时多少

3,在51单片机中nop延时多长时间

、时钟周期=振荡周期,名称不同而已,都是等于单片机晶振频率的倒数,如常见的外接12M晶振,那它的时钟周期=1/12M。2、机器周期,8051系列单片机的机器周期=12*时钟周期,之所以这样分是因为单个时钟周期根本干不了一件完整的事情(如取指令、写寄存器、读寄存器等),而12个时钟周期就能基本完成一项基本操作了。3、指令周期。一个机器周期能完成一项基本操作,但一条指令常常是需要多项基本操作结合才能完成,完成一条指令所需的时间就是指令周期,当然不同的指令,其指令周期就不一样的了。_nop_()要用1个指令周期
一个指令周期 如果是12MHz的晶体,那么指令周期为1uS,则 _nop_()为1uS
自带的延时好像是2微秒!

在51单片机中nop延时多长时间

4,单片机的延时函数的问题

#define uint unsigned intvoid delay(uint z) uint x,y; for(x=z;x>0;x--) for(y=0;y<110;y++);}Z为形参,此函数延迟1ms 如:delay(1000)即为延迟1s
留下邮箱,我发一个专门计算延时的软件给你,破解的!不要钱!
是的,延时函数中根据单片机的指令周期和时钟频率来算延时函数中循环的参数的。 比如上面的y<110的110.
y=110是某位大师自己定出的,也就是当cpu的晶振为12mhz时,x值大约为延时值(单位为毫秒)。如果想延时500ms,则z=500则可,不是很精确,但很方便。

5,单片机延时问题下面的程序延时大约是多少

如果选用标准单片机,12振荡一个机器周期,正常模式,12M晶振,采用内部直接寻址寄存器(data),其它编译控制项为缺省设置时,一句while( --num ) 的执行时间是8us,Delay函数的执行时间就是num * 8us。详细说明如下:这段程序的延时与选用的单片机型号(有12振荡一个机器周期和单振荡一个机器周期的芯片)、工作方式(正常还是倍频模式)、晶振、编译模式(变量选择内部寄存器还是外部寄存器及优化模式),num初值等都有关系。另外多说一句,num参数数据类型也是一个因素,选择ulong、uint、uchar时间是不一样的,long时间最长,char最短ulong:40usuint:8usuchar:2us差别很大的。
和选用的单片机、晶振、编译器有关。这个的话12M,stc单片机 不到1us
很少的机器周期耗费了一点时间,单时间增大的时候,它把损耗的时间减小了,所以后来就变小了其实就好比一个分数一样,当分子分母同时增加的时候的那种意思差不多楼主可以好好理解一下你要是知道汇编的话,你就知道为什么这样的建议你去看下汇编的延时计算,你就很清楚 了
初学一般都用的12M的晶振,以上是一个带形参的函数,写程序调用是应写成void Delay(1) 括号里面任写一数 延时时间为1.6us乘以括号里的数。一般我们认为void Delay(3)为5微妙延时。在不需要精确度的时候可以这样用延时函数,精准度高的时候必须用定时器。

6,请问一下这里的延时是怎么计算的呢

/*****************************************************************/谢谢"罗门大佬"提醒,DJNZ 后面跟寄存器的化,确实是2个指令周期;MOV后面如果是立即数对寄存器操作的化也是2个指令周期,只是“大佬”的解释还是不能苟同哦,现在修改我原先的回答如下(为了到1000分,努力,555):/****************************************************************/不知道你的程序上的注释究竟对不对,可以通过示波器看看吗(延时后翻转一个端口)? 从程序的注释上看应该用12MHz晶振,或者程序和题目不对应。 /********************** 小心的以为 ***************************/ DLY10S : MOV R5,100 ;2指令 4us DLY10S1: MOV R6,200 ;2指令 4us DLY10S2: MOV R7,248 ;2指令 4us DLY10S3: DJNZ R7,DLY10S3;248*2+4----------------->2指令A = 248*2*2us DJNZ R6,DLY10S2;(248*2+4)*200+4 -------->2指令B =(A+2a+2b)*200*2us DJNZ R5,DLY10S1;[(248*2+4)*200+4]*100+4->2指令C =(B+2a+2a+2b)*100*2us RET ;1指令 2us 总时间=C+1*2us;此处的+1是“RET”的时间;上述注释中的“+2a”是MOV指令周期,注意对应的循环;上述注释的“+2b”是DJNZ本身的2个机器周期;应该是这样的吧,你的程序可能有问题。
在仿真环境里,单步运行一次循环所用的时间可以得出,然后乘以循环次数

7,单片机延时程序的延时时间怎么算的

看你用什么语言计算了,汇编延时准确,知道单片机工作周期和循环次数即可算出,但不具有可移植性,在不同种类单片机中,汇编不通用。用c的话,由于各种软件执行效率不一样,不会太准,通常用定时器做延时或做一个不准确的延时,延时短的话,在c中使用汇编的nop做延时
最长的延时时间可达216=65536μs、12mhz或6mhz晶振.0592mhz。第一种更容易产生各种标准的波特率:吴鉴鹰单片机开发板(视频教程详细,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期),后两种的一个机器周期分别为1μs和2μs。参考资料来源,延时时间与晶振有关系。本程序中假设使用频率为12mhz的晶振。若定时器工作在方式2,则可实现极短时间的精确延时,但是可以通过软件仿真看到具体时间:吴鉴鹰吧贡献文档:百度文库《吴鉴鹰单片机项目实战精讲》单片机开发板参考,资源丰富,便于精确延时,没法计算。如果想精确延时,单片机系统一般常选用11,一般需要用到定时器;如使用其他定时方式如果用循环语句实现的循环,但是一般精精确延时是没法用循环语句实现的
单片机的延时程序通过执行指令来达到延时效果,这个时间等于执行的指令需要的时间,而一个指令需要的时间叫做指令周期,这个时间等于若干个机器周期。扩展资料:1丶指令周期,是每种运算需要的时间,如加法、逻辑等,是每一步进行这种指令运算需要的时间,是机器周期的整数倍,这种周期不定。2丶51单片机12M晶振,晶振周期1/12微妙,一个机器周期包含12个晶振周期,所以12M晶振时机器周期=12x(1/12)微妙=1微妙。3丶1个毫秒延时子程序如下:void delay1ms(uint ms)uint i,j;for(i=0;i<ms;i++)for(j=0;j<110;j++);} }
单片机的延时程序通过执行指令来达到延时效果,这个时间等于执行的指令需要的时间,而一个指令需要的时间叫做指令周期,这个时间等于若干个机器周期。
如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确延时。本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。

文章TAG:延时一个指令周期的时间是多少钱延时  一个  指令  
下一篇