knrt.net
当前位置:首页 >> 单片机C语言延时程序,如何计算延时时间?(高分悬... >>

单片机C语言延时程序,如何计算延时时间?(高分悬...

我记得keil里面有时间的,好久不用了,单位好像是微秒吧!就是那个分步执行,按一下执行一步的.. 比如前面那个箭头指到你的调用函数delay(200);假设执行到此部用时1110。 按一下执行,箭头指到下一“;”前的那一句了,如果此时用时显示变成了1...

不可能的,是不是你的编译有错的啊 我改的晶振12M,在KEIL 4.0 里面编译的,为你得出的结果最大也就是40ms,这是软件的原因, 不可能出现100ms那么大的差距,是你的软件的原因。 不信你实际编写一个秒钟,利用原理计算编写一个烧进单片机和利用...

C语言里没法精确延时,不像汇编语言那样能用机器周期算,试着修改wDelay数值,能达到设计要求就行

你好: 如果你想直接知道答案,那么我告诉你,12MHz晶振: void delayms(unsigned int t) { unsigned int i,j; for(i=t;i>0;i--) for(j=123;j>0;j--); } 能精确到1ms。 如果是11.0592MHz晶振,只需把上面的“j=123”改为“j=114”,都是调试过的,没...

1、一条指令执行的时间是1/12m=1us(算作一微秒);delay(1000);就需要减1000次,就应该是1000*1us=1ms。 2、每减一次需判断是否到0;翻译为汇编语言后应该是cjne指令,一个cjne指令用2个周期,1000个cjne就是2000周期,共用2ms。 3、调用函...

小51执行一条指令的需要12个时钟周期,假如使用12MHZ晶振,执行一条指令的时间就是(1/12M*12)s,也就是1us,你要得到1Ms的延时,就让他反复执行一条指令1000次,也就是x取1就可以了。

1:原理:仅仅执行一些,没有实质性影响的所谓“无意义指令”,比如做比大小啊,做某个int的自加运算啊之类的 2:两重for的作用:简单的说,就像高中数学中的“乘法原理”一样,这样可以很轻易的迅速增加上述“无意义指令”的数目 3:关于取值大小:这...

根据外部晶振的不同,延时1毫秒的循环次数也不一样,一般12M晶振的话用 for(j=time;j>0;j--);延时时,1毫秒time大概为125左右,这里用110,大概晶振为11.0592M,所以这段程序,内部循环完成1毫秒延时,外部循环完成500毫秒延时。

你这样的软件延时只是个大概值,12m和11.0592m差不了多少,所以不用改

这要取决于晶振频率。而且这段程序实际上不能实现精确的500μs延时。

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com