正在加载图片...
Kei软件实例教程(四) 设定定时初值等,点击选中TRO, status后的stop就变成了run,如果全速运行程序,此时 tho,t0后的值也快速地开始变化(同样要求 Periodic Window Updata处于选中状态),直观地 演示了定时/计数器的工作情况(当然,由于你的程序未对此写任何代码,所以程序不会对 此定时计数器的工作进行处理)。 2、性能分析 Kei提供了一个性能分析工具,利用该工具,我们可以了解程序中哪些部份的执行时间 最长,调用次数最多,从而了解影响整个程序中执行速度的瓶颈。下面通过一个实例来看 看这个工具如何使用,例5: #include"reg51h sbit p10=P1^0,∥定义P void m Delay (unsigned char Delay Time i unsigned int i; i unsigned int j=0 for(;){ mDelay(10,∥延时10 for( Delay Time>0; Delay Time--) 毫秒 for(=0j<125j++){;}} 1++; if(i==10) void m Delay l(unsigned char Delay Time) i P1 0=!Pl 0; t unsigned int j=0; for( Delay Time>0; Delay Time--) mDelay 1(10); j for(j=0j<125j++){;}} 编译连接。进入调试状态后使用菜单Ⅴiew-> Performance Analyzer Window,打开性能分 析对话框,进入该对话框后,只有一项 unspecified,点鼠标右键,在快捷菜单中选择 Setup PA 即打开性能分析设置对话框,对于C语言程序,该对话框右侧的“ Function Symbol”下的 列表框给出函数符号,双击某一符号,该符号即出现在 Define Performance Analyzer下的编 缉框中,每输入一个符号名字,点击 Define按钮,即将该函数加入其上的分析列表框。对 于汇编语言源程序, Function Symbol下的列表框中不会出现子程序名,可以直接在编缉框 中输入子程序名,点击 Close关闭窗口,回到性能分析窗口,此时窗口共有4个选项。全速 执行程序,可以看到 mDelay和 mDelay I后出现一个蓝色指示条,配合上面的标尺可以直观 地看出每个函数占整个执行时间的比例,点击相应的函数名,可以在该窗口的状态栏看到更 详细的数据,其中各项的含义如下 Min:该段程序执行所需的最短时间;Max:该段程序执行所需的最长时间;Avg:该 段程序执行所花平均时间:Totl:该段程序到目前为目总共执行的时间:%:占整个执行时 间的百分比; count:被调用的次数。 本程序中,函数 mDelay和 mDelay I每次被调用都花费同样的时间,看不出Mn、Max 和Avg的意义,实际上,由于条件的变化,某些函数执行的时间不一定是一个固定的值 借助于这些信息,可以对程序有更详细的了解。下面将 mDelayl函数略作修改作一演示 void m Delay l(unsigned char Delay Time) i static unsigned char k unsigned int j =0 for( Delay Time>0; Delay Time--) i forGe<k:j++) }k++,} 程序中定义了一个静态变量K,每次调用该变量加1,而j的循环条件与k的大小有关Keil 软件实例教程(四) 设定定时初值等,点击选中 TR0,status 后的 stop 就变成了 run,如果全速运行程序,此时 th0,tl0 后的值也快速地开始变化(同样要求 Periodic Window Updata 处于选中状态),直观地 演示了定时/计数器的工作情况(当然,由于你的程序未对此写任何代码,所以程序不会对 此定时/计数器的工作进行处理)。 2、性能分析 Keil 提供了一个性能分析工具,利用该工具,我们可以了解程序中哪些部份的执行时间 最长,调用次数最多,从而了解影响整个程序中执行速度的瓶颈。下面通过一个实例来看一 看这个工具如何使用,例 5: #include "reg51.h" sbit P1_0=P1^0; //定义 P1.0 void mDelay(unsigned char DelayTime) { unsigned int j=0; for(;DelayTime>0;DelayTime--) { for(j=0;j<125;j++) {;} } } void mDelay1(unsigned char DelayTime) { unsigned int j=0; for(;DelayTime>0;DelayTime--) { for(j=0;j<125;j++) {;} } } void main() { unsigned int i; for(;;){ mDelay(10); // 延 时 10 毫秒 i++; if(i==10) { P1_0=!P1_0; i=0; mDelay1(10);} } } 编译连接。进入调试状态后使用菜单 View->Performance Analyzer Window,打开性能分 析对话框,进入该对话框后,只有一项 unspecified,点鼠标右键,在快捷菜单中选择 Setup PA 即打开性能分析设置对话框,对于 C 语言程序,该对话框右侧的“Function Symbol”下的 列表框给出函数符号,双击某一符号,该符号即出现在 Define Performance Analyzer 下的编 缉框中,每输入一个符号名字,点击 Define 按钮,即将该函数加入其上的分析列表框。对 于汇编语言源程序,Function Symbol 下的列表框中不会出现子程序名,可以直接在编缉框 中输入子程序名,点击 Close 关闭窗口,回到性能分析窗口,此时窗口共有 4 个选项。全速 执行程序,可以看到 mDelay 和 mDelay1 后出现一个蓝色指示条,配合上面的标尺可以直观 地看出每个函数占整个执行时间的比例,点击相应的函数名,可以在该窗口的状态栏看到更 详细的数据,其中各项的含义如下: Min:该段程序执行所需的最短时间;Max:该段程序执行所需的最长时间;Avg:该 段程序执行所花平均时间;Total:该段程序到目前为目总共执行的时间;%:占整个执行时 间的百分比;count:被调用的次数。 本程序中,函数 mDelay 和 mDelay1 每次被调用都花费同样的时间,看不出 Min、Max、 和 Avg 的意义,实际上,由于条件的变化,某些函数执行的时间不一定是一个固定的值, 借助于这些信息,可以对程序有更详细的了解。下面将 mDelay1 函数略作修改作一演示。 void mDelay1(unsigned char DelayTime) { static unsigned char k; unsigned int j=0; for(;DelayTime>0;DelayTime--) { for(;j<k;j++) {;} } k++; } 程序中定义了一个静态变量 K,每次调用该变量加 1,而 j 的循环条件与 k 的大小有关
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有