原创 Keil C51的debug技巧

2008-6-1 20:56 6587 9 12 分类: MCU/ 嵌入式
Keil C51的debug技巧
A51的程序执行时间可能通过指令周期计算出来,而C51的却无从下手,很多程序员为了得到精确的执行时间而研读反汇编代码,何等的悲哀。巧妙的使用Keil中的debug功能,问题就迎刃而解了。
下面举例说明:
c2f60950-8409-4dfa-bc8b-2da092f08e1a.jpg

该程序为一个延时程序,在12M的晶振下,调用一次的时间为16uS ,执行一次循环的时间为9uS(延时范围(25us~589.831ms))。这样来,假设有语句Delay(N);那么该语句的精确延时的计算公式就是(9*N+16)uS了.这个公式可以理解吧!
如何得到程序的调用时间和执行一次循环的时间了。接着看下面:
点击开大图

在主程序MAIN()函数下添加上面两条语句,当前的SEC栏为执行到DELAY(1);语句所花的时间。T(0-)
点击开大图

上面的SEC栏为执行完DELAY(1)所花的时间,这样就可以得到DEALY(1)这条语句的执行时间为595-570=25uS.
点击开大图

上面的SEC栏为执行完DELAY(2)所花的时间,这样就可以得到DEALY(2)这条语句的执行时间为629-595=34uS.
结果不就出来了嘛,T[DELAY(2)]-T[DELAY(1)]不就是执行一次循环的时间嘛,而T[DELAY(1)]减去执行一次循环的时间就是调用一次要花的时间了。精确到1uS,与A51有差距吗?
PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1231536 2009-9-29 16:01

晕死 直接仿真时看右下角时间就好了 精确到10ns 有必要这么搞吗

lg05128018_230568758 2008-6-1 22:43

已经更正,谢谢

用户593103 2008-6-1 21:02

图片来看QQ空间,看不了???

lg05128018_230568758 2007-11-9 21:36

我还是有点疑问。呵呵,可以指教一下吗/我QQ349242603

lg05128018_230568758 2007-11-9 20:55

255吧,想想是从0计到255的。有256次了,该进位了吧。欢迎讨论^_^

多多交流

相关推荐阅读
lg05128018_230568758 2010-10-24 17:21
4052原理,扩展四串口原理
4052原理 cd4051,cd4052,cd4053, 都是数控模拟开关,4051是单刀8掷开关,4052是2刀4掷开关,4053是3刀2掷开关,4051有3个控制端abc,控制8个输入端中的1个与...
lg05128018_230568758 2010-10-13 02:45
Menu
/*********************************************************************************/code KbdTabStruct...
lg05128018_230568758 2010-09-01 08:13
指针-指针数组-数组三者之间的关系
/****************lg05128018**************2009-8-19*****************************//***************指针,指...
lg05128018_230568758 2010-02-22 20:38
EBOOT通过bin文件形式读取、下载LOGO
一般的WINCE系统都是在EBOOT阶段初始化LCD,所以要想显示自己的LOGO就需要在EBOOT阶段将LOGO内容显示出来,读取LOGO的方式可以和从存储器中读取NK一样,具体位置自己来定义。 在E...
lg05128018_230568758 2010-02-22 20:27
nk.bin和nk.nb0的区别(转帖)
 nk.bin 和nk.nb0都是CE的镜像。然而,我们在下载的过程中常常会遇到,有时候下载nk.bin,有时确是下载nk.nb0,这两者到底有什么区别呢? 首先,NK.BIN中的内容是被压缩过的,N...
lg05128018_230568758 2010-02-03 17:53
从一维数组看sizeof和strlen
作者:王姗姗,华清远见嵌入式学院讲师。前几天学习一维数组的赋值的时候遇到这样一个问题,程序如下:char a[]="hello";        char b[5]={'h','e','l','l',...
EE直播间
更多
我要评论
3
9
关闭 站长推荐上一条 /3 下一条