ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:32.86KB ,
资源ID:9232481      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9232481.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Keil教程4讲.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Keil教程4讲.docx

1、Keil教程4讲Keil 的辅助工具和部份高级技巧在前面的几讲中我们介绍了工程的建立方法,常用的调试方法,除此之外,Keil 还提供 了一些辅助工具如外围接口、性能分析、变量来源分析、代码作用分析等,帮助我们了解程 的性能、查找程序中的隐藏错误,快速查看程序变量名信息等,这一讲中将对这些功工具作 一介绍,另外还将介绍 Keil 的部份高级调试技巧。一、 辅助工具这部份功能并不是直接用来进行程序调试的,但可以帮助我们进行程序的调试、程序性 能的分析,同样是一些很有用的工具。1、外围接口为了能够比较直观地了解单片机中定时器、中断、并行端口、串行端口等常用外设的使用情况,Keil 提 供了一些外围接

2、口对话框,通过 Peripherals 菜单选择, 该菜单的下拉菜单内容与你建立项目时所选的 CPU 有关,如果是选择的 89C51 这一类“标准”的 51 机, 那么将会有 Interrupt(中断)、I/O Ports(并行 I/O 口)、 Serial(串行口)、Timer(定时/计数器)这四个外围设图 1 外围设备之并行端口备菜单。打开这些对话框,列出了外围设备的当前使用情况,各标志位的情况等,可以在这 些对话框中直观地观察和更改各外围设备的运行情况。下面我们通过一个简单例子看一看并行端口的外围设备对话框的使用。例 4:MOVA,#0FEHLOOP:MOVP1,ARLACALLDELA

3、Y ;延时 100 毫秒JMPLOOP其中延时 100 毫秒的子程序请自行编写。编 译 、 连 接 进 入 调 试 后 , 点 击 Peripherals-I/O-Ports-Port 1 打开,如图 1 所示,全速运 行,可以看到代表各位的勾在不断变化(如果看不到变化, 请点击 View-Periodic Window Updata),这样可以形象地 看出程序执行的结果。注:如果你看到的变化极快,甚至看不太清楚,那么 说明你的计算机性能好,模拟执行的速度快,你可以试着 将加长延时程序的时间以放慢速度。模拟运行速度与实际 运行的速度无法相同是软件模拟的一个固有弱点。点击 Peripherals

4、-I/O-Ports-Timer0 即出现图 2 所示 定时/计数器 0 的外围接口界面,可以直接选择 Mode 组中 的下拉列表以确定定时/计数工作方式,0-3 四种工作方式,图 2 外围设备之定时器设定定时初值等,点击选中 TR0,status 后的 stop 就变成了 run,如果全速运行程序,此时th0,tl0 后的值也快速地开始变化(同样要求 Periodic Window Updata 处于选中状态),直观地 演示了定时/计数器的工作情况(当然,由于你的程序未对此写任何代码,所以程序不会对 此定时/计数器的工作进行处理)。2、性能分析Keil 提供了一个性能分析工具,利用该工具,我

5、们可以了解程序中哪些部份的执行时间 最长,调用次数最多,从而了解影响整个程序中执行速度的瓶颈。下面通过一个实例来看一 看这个工具如何使用,例 5:#include reg51.hsbit P1_0=P10; /定义 P1.0void mDelay(unsigned char DelayTime) unsigned int j=0;for(;DelayTime0;DelayTime-) for(j=0;j0;DelayTime-) for(j=0;jPerformance Analyzer Window,打开性能分 析对话框,进入该对话框后,只有一项 unspecified,点鼠标右键,在快捷菜

6、单中选择 Setup PA 即打开性能分析设置对话框,对于 C 语言程序,该对话框右侧的“Function Symbol”下的 列表框给出函数符号,双击某一符号,该符号即出现在 Define Performance Analyzer 下的编 缉框中,每输入一个符号名字,点击 Define 按钮,即将该函数加入其上的分析列表框。对 于汇编语言源程序,Function Symbol 下的列表框中不会出现子程序名,可以直接在编缉框 中输入子程序名,点击 Close 关闭窗口,回到性能分析窗口,此时窗口共有 4 个选项。全速 执行程序,可以看到 mDelay 和 mDelay1 后出现一个蓝色指示条,

7、配合上面的标尺可以直观 地看出每个函数占整个执行时间的比例,点击相应的函数名,可以在该窗口的状态栏看到更 详细的数据,其中各项的含义如下:Min:该段程序执行所需的最短时间;Max:该段程序执行所需的最长时间;Avg:该 段程序执行所花平均时间;Total:该段程序到目前为目总共执行的时间;%:占整个执行时 间的百分比;count:被调用的次数。本程序中,函数 mDelay 和 mDelay1 每次被调用都花费同样的时间,看不出 Min、Max、和 Avg 的意义,实际上,由于条件的变化,某些函数执行的时间不一定是一个固定的值, 借助于这些信息,可以对程序有更详细的了解。下面将 mDelay1

8、 函数略作修改作一演示。void mDelay1(unsigned char DelayTime) static unsigned char k;unsigned int j=0;for(;DelayTime0;DelayTime-) for(;jmode com1 19200,0,8,1assign com1 sout注意两行最前面的“”是提示符,不要输入,第二行中的“”即“小于”和 “大于”符号,中间的是字母“s”和“input”的前两个字母,最后是字母“s”和“output” 的前三个字母。第一行命令定义串口 1 的波特率为 19200,无奇偶校验,8 位数据,1 位停止位。第二 行是将

9、串口 1(com1)分配给串行窗口。全速运行程序,然后切换串口精灵,开始发送,会看到发送后的数据会立即回显到窗口 中,说明已接收到了发送过来的数据。切换到 uVison,查看串行窗口 1,会看到这里的确接 收到了串口精灵送来的内容。2、从端口送入信号程序调试中如果需要有信号输入,比如数据采集类程序,需要从外界获得数据,由于 Keil 的调试完全是一个软件调试工具,没有硬件与之相连,所以不可能直接获得数据,为此 必须采用一些替代的方法,例如,某电路用 P1 口作为数据采集口,那么可以使用的一种方 法是利用外围接口,打开 PORT 1,用鼠标在点击相应端口位,使其变为高电平或低电平, 就能输入数据

10、。显然,这种方法对于要输获得数据而不是作位处理来说太麻烦了,另一种方 法是直接在 command 页输入 port1=数值,以下是一个小小的验证程序。例 7:LOOP: MOV A,P1JZ NEXTMOV R0,#55H JMP LOOPNEXT: MOV R0,#0AAH JMP LOOPEND该程序从 P1 口获得数据,如果 P1 口的值是 0,那么就让 R0 的值为 0AAH,否则让 R0 的值为 55H。输入源程序并建立工程,进入调试后,在观察窗口加入 R0,然后全速运行程 序,注意确保 View-Periodic Window Updata 处于选中状态,然后在 Command 后

11、输入 PORT1=0 回车后可以发现观察窗口中的 R0 的值变成了 0AAH,然后再输入 PORT1=1 或其 它非零值,则 R0 的值会变为 55H。同样的道理,可以用 port0、port2、port3 分别向端口 0、2、3 输入信号。3、直接更改内存值在程序运行中,另一种输入数据的方法是直接更改相应的内存单元的值,例如,某数据 采集程序,使用 30H 和 31H 作为存储单元,采入的数据由这两个单元保存,那么我们更改了 30H 和 31H 单元的值就相当于这个数据采集程序采集到了数据,这可以在内存窗口中直 接修改(参考上一讲),也可以通过命令进行修改,命令的形式是: _WBYTE (地址,数据),其中地 址是 指待写 入内 存单元 的地 址,而 数据 则是待 写入 该地址 的数 据。例 如_WBYTE(0x30,11)会将值 11 写入内存地址十六进制 30H 单元中。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1