knrt.net
当前位置:首页 >> 求助:单片机C语言中延时程序怎样计算? >>

求助:单片机C语言中延时程序怎样计算?

你好: 如果你想直接知道答案,那么我告诉你,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、调用函...

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

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

在keil里单步调试的时候查看汇编代码,就知道了是怎么运行的了,楼主要是懂汇编一看就会明白的,好运

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

如果使用普通的for或者if语句做延时程序,就使用编译器进行软件仿真,将编写好的程序编译之后进入软件调试模式,进入延时函数之后,在函数最后设置断点,然后快速运行,一般编译器都可以看到函数的执行时间,你可以通过更改数字来微调延时时间。...

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

void Delayms_110592(unsigned int time)//延时时间为 1ms * x 晶振是11.0592M{ unsigned int x,y; for(y = 0; y < time; y++) for(x = 0;x < 111; x++);} 延时0.5秒,调用如下: delayms_110592(500);

51单片机12M晶振延时1us,只需要执行一个NOP就是了。C语言中也是如此。 #include #include main() { _nop_(); //延时1us while(1); }

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