单片机执行一条for语句的时间

比如一个delay的函数:Voiddelay(inti){intj;for(;i>0;i--)for(j=0;j=100;j++);}那么对于i=1这个Delay延迟多久... 比如一个delay的函数:
Void delay(int i)
{
int j;
for(;i>0;i--)
for(j=0;j=100;j++);
}
那么对于i=1这个Delay延迟多久,有看到其他地方一条语句是1us,但是这样的话这个函数应该才100us,而书上是个1ms的延迟...
主频12Mhz,为什么会是1ms
展开
 我来答
xiaochao_2009
2010-05-27 · 超过17用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:37.6万
展开全部
你理解错汇编语言 和 C 语言 一条语句执行时间的意思。汇编语言一部分指令,执行一次确实是1US,但C语言不是,C语言的语句不是等价于汇编语言的,C语言的每条语句可能等价于汇编语言的好几句。换算关系不是简单的看有几条语句。精确的C延时都是汇编写个小延时,用C在外面嵌套即可。

1MS 是因为你把这个函数反汇编的代码,一个 for 循环不是一个语句,是有几条语句执行的。C 和 汇编 语句不是等价的,要不然大家都直接用C,汇编高效率的优势早就不存在了。
ggkkt
高粉答主

2015-09-01 · 醉心答题,欢迎关注
知道大有可为答主
回答量:1.7万
采纳率:89%
帮助的人:1649万
展开全部
一条for语句执行时间为10us。

for语句的一般格式为:for(表达式1;表达式2;表达式3){循环体语句;}

for语句的执行步骤是:先求表达式1的值并作为变量的初值,再判断表达式2是否满足条件,若为真则执行循环体语句,最后执行表达式3对变量进行修正,再判断表达式2是否满足条件,这样直到表达式2的条件不满足时退出循环。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
murexster
2010-05-26 · TA获得超过386个赞
知道小有建树答主
回答量:394
采纳率:0%
帮助的人:167万
展开全部
这个跟单片机的主频有很大关系,普通的51编译后大致是1ms左右
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liu_2408
2010-05-26
知道答主
回答量:42
采纳率:0%
帮助的人:0
展开全部
在DEBUG里面看看反汇编的代码~~在那里计算时间。每条汇编指令的时候看书。
一般51都是用KEIL。先仔细看看keil的用法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
健而知道
2012-06-21
知道答主
回答量:16
采纳率:0%
帮助的人:4.7万
展开全部
可据我所知执行一条for语句用时3us
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式