帮忙仔细分析一下这个程序是怎样延时0.2秒的。谢谢! void delay02s(void) {unsigned char i,j,k;

帮忙仔细分析一下这个程序是怎样延时0.2秒的。谢谢! void delay02s(void) {unsigned char i,j,k;,第1张

函数执行了99620次x-- *** 作,x-- *** 猛银作包括一次mov、dec、mov *** 作,这些 *** 作耗费搭肢一定的cpu周期,不同的cpu其时钟周期的时间长度不同,所以这个函数延时0.2秒只是针对某特定型号的cpu的,比如,你在酷睿处理器上延时了0.2秒,到了奔3处理器上就远不止0.2秒了。

至于它是怎么实现在特定cpu上延时0.2秒的,这个只能通过实验得出了。比如不断的调整k的值,然后检查该函数实际延时的时长,当k=248时枝枝宴,差不多是0.2秒了,那么就找到了k的值了。

算法是这样的:

这个用编译软件,如KEIL,编译通过之后,进入软件调试功能,空掘羡就可以散枣测出来是延时多少秒。

具体我帮你调试过斗拍了,如果单片机接12MHz晶振的话,这个是延时0.2秒的子程序。你调用一次delay();就延时0.2秒。

请选为最佳答案哦亲。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8266106.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存