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

[复制链接]
9193|50
 楼主| mhl331302671 发表于 2011-11-18 13:52 | 显示全部楼层 |阅读模式
假设晶振为12MHZ,单片机执行C语言的一步需要多久,这个时间是怎么算得?
HWM 发表于 2011-11-18 13:57 | 显示全部楼层
re LZ:

这要看具体机器指令的执行时间,不同类型的指令执行时间不同。所以就指令层面都无法统一确定就更不用说C语言了。
 楼主| mhl331302671 发表于 2011-11-18 13:59 | 显示全部楼层
2# HWM
比如说  i++;  执行需要多久?
HWM 发表于 2011-11-18 14:01 | 显示全部楼层
to 3L:

也没法确定。
HWM 发表于 2011-11-18 14:04 | 显示全部楼层
要确定具体执行时间,必须落实到具体的CPU,然后确定编译参数(含优化),最终看汇编指令是如何实现的。
 楼主| mhl331302671 发表于 2011-11-18 14:05 | 显示全部楼层
4# HWM
那有时候看时序图需要延时的时候,您都是怎么写程序来保证延时的时间会充足呢?
yewuyi 发表于 2011-11-18 14:09 | 显示全部楼层
从LZ的几个帖子来看,唯一的回答就是不能确定。

因为LZ是希望知道C代码中一行代码执行的时间长度,但C语言中一行代码可能是一个很复杂的汇编指令组合,而到底有多少条指令,则需要就具体代码具体分析,显然没有答案。
 楼主| mhl331302671 发表于 2011-11-18 14:21 | 显示全部楼层
 楼主| mhl331302671 发表于 2011-11-18 14:21 | 显示全部楼层
比如说在51单片机中我想要延时15微妙,该怎么写程序呢?
zhl100 发表于 2011-11-18 14:29 | 显示全部楼层
算的时候要看你的一条c指令转化成几句汇编,汇编是怎么执行的
再转化成机器周期
再通过晶振频率算

看看51的书,上面有的。:D
zhl100 发表于 2011-11-18 14:30 | 显示全部楼层
用定时器吧,在定时器中断里计时
 楼主| mhl331302671 发表于 2011-11-18 14:42 | 显示全部楼层
11# zhl100
如果在一段程序中有多处延时,不可能每次都进入中断吧?我这样说对吗?
兰天白云 发表于 2011-11-18 14:46 | 显示全部楼层
LZ这样问问题,我傻眼了
yewuyi 发表于 2011-11-18 14:50 | 显示全部楼层
LZ这样问问题,我傻眼了
兰天白云 发表于 2011-11-18 14:46


风紧,扯乎
tyw 发表于 2011-11-18 15:03 | 显示全部楼层
一般用试验方法: 把某一I/O口取反,空操作几步后循环,再用示波器测I/O口波形,计算时间.
注册好烦 发表于 2011-11-18 16:17 | 显示全部楼层
单步执行不就知道了,有这么困难吗!
xm419 发表于 2011-11-18 16:37 | 显示全部楼层
15楼的方法是最方便的,俺们都是这么做的
blx13579 发表于 2011-11-18 17:13 | 显示全部楼层
如果,要精确计算10楼是正解;
junming6385 发表于 2011-11-18 17:14 | 显示全部楼层
加软件断点可以得出执行时间
谈的元 发表于 2011-11-18 21:57 | 显示全部楼层
首先明白 汇编指令 执行时间

然后看 C的反汇编,然后调整C的参数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我是菜鸟,求合体,求指点,各种求。。。

1

主题

63

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部