51单片机C语言for循环延时程序时间计算

设晶振12MHz,即一个机器周期是1us。for(i=0,i<100;i++)for(j=0,j<100;j++)我觉得时间是100*100*1us=10ms,怎么会是1... 设晶振12MHz,即一个机器周期是1us。
for(i=0,i<100;i++)
for(j=0,j<100;j++)
我觉得时间是100*100*1us=10ms,怎么会是100ms
展开
 我来答
J_KKKK
推荐于2017-12-16 · 超过14用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:22.5万
展开全部

不可能的,是不是你的编译有错的啊

我改的晶振12M,在KEIL 4.0 里面编译的,为你得出的结果最大也就是40ms,这是软件的原因,

不可能出现100ms那么大的差距,是你的软件的原因。

不信你实际编写一个秒钟,利用原理计算编写一个烧进单片机和利用软件测试的秒程序烧进单片机,你会发现原理计算的程序是正确的

追问
我运行时都差不多100ms,后来想想估计是执行一次FOR语句,不只是简单的一个机器周期。要把它转场汇编是才能按机器周期来算。
还是挺谢你的
东方白飞
2013-04-14 · TA获得超过167个赞
知道小有建树答主
回答量:357
采纳率:0%
帮助的人:174万
展开全部
一条for语句执行时间为10us
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
正版熊咔
2019-06-22
知道答主
回答量:1
采纳率:0%
帮助的人:718
展开全部
一条for语句好像是占用10个机器周期
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
情缘一生远
2011-02-27 · TA获得超过369个赞
知道答主
回答量:403
采纳率:0%
帮助的人:0
展开全部
,你发现那两个空循环后面是不是多了个“;”符号,那个就是循环的内容。
for循环后面没有大括号的话,就以最近的“;”符号算一次循环。
不知道你听明白没有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式