正在加载图片...
Kei软件实例教程(四) 这使每次执行该程序所花的时间不一样。编译、执行该程序,再次观察性能分析窗口,可以 看出Min、Max、Awg的意义。 3、变量来源浏览 该窗口用于观察程序中变量名的有关信息,如该变量名在那一个函数中被定义、在哪里 被调用,共出现多少次等。在 Source browse窗口中提供了完善的管理方法,如过滤器可以 分门别类地列出各种类别的变量名,可以对这些变量按 Class(组)、Type(类型)、 Space (所在空间)、Use(调用次数)排序,点击变量名,可以在窗口的右侧看到该变量名的更 详细的信息 4、代码作用范围分析 在你写的程序中,有些代码可能永远不会被执行到(这是无效的代码),也有一些代码 必须在满足一定条件后才能被执行到,借助于代码范围分析工具,可以快速地了解代码的执 行情况。 进入调试后,全速运行,然后按停止按钮,停下来后,可以看到在源程序的左列有三种 颜色,灰、淡灰和绿,其中淡灰所指的行并不是可执行代码,如变量或函数定义、注释行等 等,而灰色行是可执行但从未执行过的代码,而绿色则是已执行过的程序行。使用调试工具 条上的 Code Coverage window可打开代码作用范围分析的对话框,里面有各个模块代码执 行情况的更详细的分析。如果你发现全速运行后有一些未被执行到的代码,那么就要仔细分 析,这些代码究竞是无效的代码还是因为条件没有满足而没有被执行到 二、部份高级调试技巧 Kei内置了一套调试语言,很多高级调试技巧与此有关,但是全面学习这套语言并不现 实,这不是这么几期连载可以胜任的,这里仅介绍部份较为实用的功能,如要获得更详细的 信息,请参考Kei自带的帮助文件GS51PDF。 1、串行窗口与实际硬件相连 Kei的串行窗口除可以模拟串行口的输入和输出功能外还可以与PC机上实际的串口相 连,接受串口输入的内容,并将输出送到串口。这需要在Kel中进行设置。方法是首先在 输出窗口的 Command页用MODE命令设置串口的工作方式,然后用 ASSIGN命令将串行 窗口与实际的串口相关联,下面我们通过一个实例来说明如何操作。例6: ORG 0000H SETB ES JMP START JMP$;主程序到此结束 ORG3+4*8;串行中断入口 SER INT. JMP SER INT JBC RINEXT;如果串口接收到字 START 符,转 MOV SP#5FH:堆栈初始化 JMP SEND 否则转发送处理 CALL SER INIT串行口初始化A NEXT SETB EA MOV ASBUF;从SBUF中取字符Keil 软件实例教程(四) 这使每次执行该程序所花的时间不一样。编译、执行该程序,再次观察性能分析窗口,可以 看出 Min、Max、Avg 的意义。 3、变量来源浏览 该窗口用于观察程序中变量名的有关信息,如该变量名在那一个函数中被定义、在哪里 被调用,共出现多少次等。在 Source Browse 窗口中提供了完善的管理方法,如过滤器可以 分门别类地列出各种类别的变量名,可以对这些变量按 Class(组)、Type(类型)、Space (所在空间)、Use(调用次数)排序,点击变量名,可以在窗口的右侧看到该变量名的更 详细的信息。 4、代码作用范围分析 在你写的程序中,有些代码可能永远不会被执行到(这是无效的代码),也有一些代码 必须在满足一定条件后才能被执行到,借助于代码范围分析工具,可以快速地了解代码的执 行情况。 进入调试后,全速运行,然后按停止按钮,停下来后,可以看到在源程序的左列有三种 颜色,灰、淡灰和绿,其中淡灰所指的行并不是可执行代码,如变量或函数定义、注释行等 等,而灰色行是可执行但从未执行过的代码,而绿色则是已执行过的程序行。使用调试工具 条上的 Code Coverage Window 可打开代码作用范围分析的对话框,里面有各个模块代码执 行情况的更详细的分析。如果你发现全速运行后有一些未被执行到的代码,那么就要仔细分 析,这些代码究竟是无效的代码还是因为条件没有满足而没有被执行到。 二、部份高级调试技巧 Keil 内置了一套调试语言,很多高级调试技巧与此有关,但是全面学习这套语言并不现 实,这不是这么几期连载可以胜任的,这里仅介绍部份较为实用的功能,如要获得更详细的 信息,请参考 Keil 自带的帮助文件 GS51.PDF。 1、串行窗口与实际硬件相连 Keil 的串行窗口除可以模拟串行口的输入和输出功能外还可以与 PC 机上实际的串口相 连,接受串口输入的内容,并将输出送到串口。这需要在 Keil 中进行设置。方法是首先在 输出窗口的 Command 页用 MODE 命令设置串口的工作方式,然后用 ASSIGN 命令将串行 窗口与实际的串口相关联,下面我们通过一个实例来说明如何操作。例 6: ORG 0000H JMP START ORG 3+4*8 ;串行中断入口 JMP SER_INT START: MOV SP,#5FH ;堆栈初始化 CALL SER_INIT ;串行口初始化 A SETB EA ; SETB ES ; JMP $ ;主程序到此结束 SER_INT: JBC RI,NEXT ;如果串口接收到字 符,转 JMP SEND ;否则转发送处理 NEXT: MOV A,SBUF ;从 SBUF 中取字符
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有