12M晶振单片机。 while(i--) { ; } 循环一次占几个机器周期,为什么?

 我来答
BOWEIWorks
推荐于2017-07-07 · TA获得超过304个赞
知道小有建树答主
回答量:290
采纳率:83%
帮助的人:84.1万
展开全部
告诉你一个很容易的办法,要想知道这段程序用了多少指令周期就把这段程序放在KEIL C51里面调用,在调用前记住机器周期数,调用完之后会产生一个新的周期数,这两个周期数的差值就是这段程序执行完所需要的周期数了,然后再根据使用晶振频率计算出周期的时间,这个方法对精确延时调试很管用的,多少可以用NOP空指令补,希望能采纳
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yzjgod
2017-07-07 · TA获得超过186个赞
知道小有建树答主
回答量:322
采纳率:100%
帮助的人:153万
展开全部
跟晶振速度没有关系,这个几个机器周期不一定,得看是什么单片机,程序编译好后,查看生成的编译文件,找到对应的编译好的汇编程序,对照每个汇编命令的指令周期,计算一共需要多少机器周期,如果要算耗时,再根据晶振算下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hhb6698
2017-05-07 · TA获得超过820个赞
知道小有建树答主
回答量:702
采纳率:20%
帮助的人:180万
展开全部
一般是4个,这个用微芯的芯片用了10个,先判断i不为0,再i- -,再判断i是否为0,是0退出,不是0继续。谢谢
追答
微芯用的是MPLAB编译软件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
he_123456
2017-05-07 · TA获得超过2892个赞
知道大有可为答主
回答量:3162
采纳率:58%
帮助的人:1330万
展开全部
这是个和具体编译器等有关的问题,没有标准答案的。
自己看看生成的汇编代码 或者仿真跑一下,就有答案了,
但这种答案是不通用的,和编译器类型、版本、参数设置(例如优化等级)都有关系,
甚至这行代码前后的代码不一样都可能导致不一样的编译结果。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2017-07-06 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38384
国家科技进步奖

向TA提问 私信TA
展开全部
这个不好说清楚的,与i的数据类型有关,还与编译器有关。所以要精确计算时间,必须用汇编,这是实打实的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式