注册 登录
编程论坛 单片机编程

关于C51的语句执行时间

软编小虫 发布于 2010-10-09 23:53, 4078 次点击
很多场合要计算一个精确的时间,但往往束手无策,并非觉得算起来很烦,而是不知怎样算。
如:
   用一个12M的晶振时钟,
                        执行if(i<c);用时怎么计算?
                        执行if(i<c)i++;用时怎么计算?
                        执行if(i<c){i++;c++;}用时怎么计算?
                        是不是每每遇上一个“;”号时算是一条C51指令,然后所用的时间都一样?
15 回复
#2
河南机专2010-10-11 10:09
你怎么也问这个啊,我也是不懂这呢
#3
软编小虫2010-10-11 13:29
太忙,太懒,主要是太笨,所以我便不懂了。。。。。
没关系,三天内把它弄出来。
#4
软编小虫2010-10-13 13:47
低估了那时间计算的复杂度,嗦尼(SORRY),三天内弄不出来了。。。。。
#5
筱晓绾2010-10-13 16:41
.
#6
软编小虫2010-10-14 00:23
会解决滴(在校的兄弟姐妹,烦烦你们问问那让你们烦烦的老师呀//)。。。。
#7
xinyuan542010-10-16 09:59
只会用汇编延迟时间!!
#8
软编小虫2010-10-16 21:52
很失望,因为从小道上得知,需把代码反译为汇编,才可看出指令形式,从中计算出确确时间。
疯了!因为没用过汇编。
#9
cs1qq2010-10-29 16:21
进入调试模式,把光标移到if(i<c)i++;语句的下一句前面,然后点击运行到 光标处,然后查看keil左边的列表就可以知道了
#10
软编小虫2010-10-30 21:29
回复 9楼 cs1qq
那样让机器帮你算出也不错,但那有点不准的哟,即便你把晶振值设得跟实际电路一致,但通过那软件模拟时,它时间快慢在一定程度上与你电脑的CPU有很大的关系,我就做过那测试,一样的程序,两台不同的机器,I/0口的切换值就是不一样,放到板子上的实际工作情况更是相差很远。。。。。
用汇编计算应是最准的了。。。。。看到明年得学学汇编了
#11
roar2010-12-04 17:46
晶振是11.0592M HZ的,好像执行一条语句时间是一个机器周期
#12
软编小虫2010-12-06 20:31
呵呵,没那么简单,因为同一个晶振不同的语句,执行的时间是不一样的,如执行一个加法与一个乘法,它们的时间是不一样的。
#13
谨信2011-01-01 11:04
在测试调试时是会显示运行时间的,与你设定的调试频率相符合
#14
谨信2011-01-01 11:08
;表示是一个表达式完备,不是C51指令
#15
超级口水哥2012-11-30 21:32
用单片机精灵测测啊
#16
华晴13982020-06-30 21:27
都2020年了,兄弟如何了?!兄弟你已经有好几年不来这论坛了,不知道n年之后你会不会看到这消息,如果n年的某一天你看到了,记得回复一下,也许n年之后,我也忘记有这论坛的,忘记了这条评论了。时间真快!!!!!!!!!!!!!!
1