发新帖我要提问
123
返回列表
打印

c语言执行一步需要多久?

[复制链接]
楼主: mhl331302671
手机看帖
扫描二维码
随时随地手机跟帖
41
寅辰思瑜| | 2011-11-23 10:09 | 只看该作者 回帖奖励 |倒序浏览
用keil可以看出来的..

使用特权

评论回复
42
375606426| | 2011-11-23 10:55 | 只看该作者
蛋腚

使用特权

评论回复
43
xymxym| | 2011-11-23 11:04 | 只看该作者
唯一能确定的是C内嵌汇编NOP指令,一般的单片机NOP都是单周期的。
你想延时15us就放13个NOP吧,要考虑调用函数一般所花费的两三个指令周期。
:victory:

使用特权

评论回复
44
wangjun403| | 2011-11-23 13:25 | 只看该作者
呵呵

使用特权

评论回复
45
liuoulyy| | 2011-11-24 15:09 | 只看该作者
怎么不可以呢?比如中断10MS,10次不就100MS

使用特权

评论回复
46
wangz2011| | 2011-11-25 10:27 | 只看该作者
楼主最好懂汇编。
汇编指令少,且每条指令盼周期都固定是跟据振荡周期算得指令周期得到。
要知道c语言的,需要转化为相应汇编,再算。
灵活性造就“不确定性”。

使用特权

评论回复
47
jianke123007| | 2011-11-25 10:56 | 只看该作者
算的时候要看你的一条c指令转化成几句汇编,汇编是怎么执行的
再转化成机器周期
再通过晶振频率算

使用特权

评论回复
48
a0502090116| | 2011-11-26 00:05 | 只看该作者
你在编译软件里 会有的计算的 按单步执行就可以知道了

使用特权

评论回复
49
441920801| | 2012-7-13 11:46 | 只看该作者
:'(e也不知道啊

使用特权

评论回复
50
cool_coder| | 2012-7-13 12:14 | 只看该作者
LZ直接问怎么做纯软件延时就行了。

延时的时间主要依赖于一条指令的执行时间(与具体指令和系统时钟有关)
有些编译器提供了方便的函数调用,比如IAR for AVR的__delay_cycles()
没有编译器直接支持的情况下,写汇编模块是比较直观的做法
如果非要用C写,就要实际看看编译的结果了;或者用某些调试平台提供的profiler分析一下函数的实际运行周期数。

如果你这样做只是为了模拟某种硬件接口(比如SPI,I2C),劝你还是换一种方法,直接选用带相关硬件支持的芯片,硬件在时序控制上要比纯软件强得多,不仅精度高,速度快,配合上一定的操作逻辑,还能降低CPU的占用率。

使用特权

评论回复
51
hawksabre| | 2012-7-14 20:15 | 只看该作者
写一段循环语句   在循环开始和循环结束设置两个断点   让软件全速运行   到第一个断点停止  在运行到第二个断点  查看编译器中消耗的时间  除以循环的次数   就是一行代码运行的时间   哈哈  说穿了  单片机就是玩时间   用各种方法玩时间   呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则