两个延时语句的不同之处

来源:本站
导读:目前正在解读《两个延时语句的不同之处》的相关信息,《两个延时语句的不同之处》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《两个延时语句的不同之处》的详细说明。
简介:讨论两个延时语句的不同之处。

第一个:

dlynum=100;

while((sgn==0)&&(dlynum>0))

{

dlynum--;

DelayMs(1); //一个延时0.14ms的子函数

}

第二个:

dlynum=1000;

while((sgn==0)&&(dlynum--));

目的是当sgn==0一直不变的话,超过10ms以上便跳出while语句,防止程序卡死。第一个可用,而且延时的效果就是0.14ms*100;而第二个,在keil调试的时候运行完这段需要12ms,可是运行在单片机里却没有延时作用,调试的时候晶振频率已经改成开发板的晶振了。其实用DEbug模式断点单步执行一次就明白啦。

一个是循环100次, 一个是循环1000次。100*12us + 0.14 ms*100 约等于 14ms 而1000次 就是12ms了 。

首先我们来说说这两个延时函数吧,第一个延时函数里面DelayMs(1); //一个延时0.14ms的子函数,这个延时函数的主体没有看到,所以也不能完全确定他就是0.14ms,再说,同样的延时函数在不同的单片机里,不同的晶振,也会有差异,所以这个时间差异不好评估;至于第二个函数吧,dlynum--其实也就是dlynum = dlynum - 1;实际上他也是分两部来做的,首先是dlynum - 1,然后再是将dlynum - 1赋值给dlynum,相当于执行了两句,本身也会消耗2个CPU周期,对一般单片机来说,一个CPU周期差不多就是1us,但是这个不是死的;建议如果要实现这么短时间的精确定时的话,可以用定时器中断去实现,那样误差会相对小些!

提醒:《两个延时语句的不同之处》最后刷新时间 2024-03-14 01:01:41,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《两个延时语句的不同之处》该内容的真实性请自行鉴别。