keil调试经验.doc

上传人:本田雅阁 文档编号:2510226 上传时间:2019-04-04 格式:DOC 页数:12 大小:242.52KB
返回 下载 相关 举报
keil调试经验.doc_第1页
第1页 / 共12页
keil调试经验.doc_第2页
第2页 / 共12页
keil调试经验.doc_第3页
第3页 / 共12页
keil调试经验.doc_第4页
第4页 / 共12页
keil调试经验.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《keil调试经验.doc》由会员分享,可在线阅读,更多相关《keil调试经验.doc(12页珍藏版)》请在三一文库上搜索。

1、KEIL调试高级技巧在调试状态,Debug 菜单项中的命令可以使用了,有关编译的工具栏按钮消失了,出现了一个用于运行和调试的工具栏,Debug 菜单上的大部份命令都有相应的快捷按钮。从 左到右依次是复位、运行、暂停、单步跟踪、单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1串行窗口、内存窗口、性能分析、工具按钮命令; 然后按一下图示第二个“运行”按钮。连接上相关的实验资源,本实验用一条8PIN的数据排线把实验仪的CPU部份的P1口(JP44)连接到八路指示灯部份的JP32。这时你会看到实验仪的八个红色LED,轮流点亮,表示运行成功,

2、也可以查看相关的变量和参数,非常方便。单步 跟踪运行使用菜单Debug-Step 或上图第四个单步运行按钮或使用快捷键 F11 可以单步跟踪执行程序,在这里我们按下 F11 键,即可执行该箭头所指程序行,每按一次 F11,可以看到源程序窗口的左边黄色调试箭头指向下一行,如果程序中有Delay延时子程序,则会进入延时程序中运行。 单步 运行 如果Delay 程序有错误,可以通过单步跟踪执行来查找错误,但是如果 Delay 程序已正确,每次进行程序调试都要反复执行这些程序行,会使得调试效率很低,为此,可以在调试时使用 F10 来替代 F11(也可使用菜单 Step Over 或相应的命令按钮),在

3、 main 函数中执行到 Delay时将该行作为一条语句快速执行完毕。为了更好的进行对比,我们重新进入仿真环境,将反汇编窗口关闭,不断按 F10 键,可以看到在源程序窗口中的左边黄色调试箭头不会进入到延时子程序。全速 运行点击工具栏上的“运行”按钮或按F5 键启动全速运行,全速执行程序,此时用户板上的 P1 口所接 LED 以流水灯状态显示。 暂停点击工具栏上的按钮,此时用户板上的P1 口所接 LED 停止以流水灯状态显示,只有一个 LED 灯点亮(取决于暂停前的 P1 的值)。观察修改寄存器的值Project 窗口在进入调试状态后显示 Regs 页的内容,包括工作寄存器 R0R7 的内容和累

4、加器 A、寄存器 B、堆栈指针 SP 的内容。 用户除了可以观察以外还可自行修改,例如将寄存器a 的值 0x62 改为 0x85。方法一:用鼠标点击选中单元a, 然后再单击其数值位置,出现文字框后输入 0x85 按回车键即可;方法二:在命令行窗口,输入A=0x85,按回车键将把 A 的数值设置为 0x856.观察修改存储器的数据 点击菜单“视图View-储存器窗口Memory Windows”,便会打开 储存器Memory 窗口(如窗口已打开,则会关闭), Memory 窗口可以同时显示 4 个不同的存储器区域,点击窗口下部分的编号可以相互切换显示。在储存器1(Memory#1) 的地址输入栏

5、内输入“D:0e0h”,按回车键后,可以从内部可直接寻址 RAM 的e0H 地址处开始显示, e0H 地址的值就是寄存器 a 的值,应与主寄存器窗口下的值相同。点击窗口下部分的储存器2(Memory#2),在 Address 输入栏内输入“D:0e0h”,按回车键后,可以从内部可间接寻址 RAM 的 e0H 地址处开始显示。点击窗口下部分的Memory#3,在 Address 输入栏内输入“C:0x0021”,按回车键后,可以从代码区域 0000H 地址处开始显示,这时各地址值应与在反汇编窗口中的值相同。点击窗口下部分的Memory#4,在 Address 输入栏内输入“X:00h”,按回车键

6、后,可以从xdata RAM 区域 0000H 地址处开始显示。通过 Memory 窗口修改数据 在Memory 窗口中显示的数据可以修改。例如,要改动 data 区域 OXE0 地址的数据内容:把鼠标移动到该数据的显示位置,按动鼠标右键在弹出的菜单中选中:更新储存器“Modify Memory at D:0xE0”,在弹出对话框的文本输入栏内输入相应数值,按回车键或点击 OK,修改完成。通过命令行查看数据 例如,我们想查看data 空间从 0x01 到 0x03 地址的内容,可在命令输入窗口输入“d d:0x01,03H”, 回车即可完成,d 表示 data 空间,0x01 表示起始地址,0

7、3H 表示结束地址(注意两种 16 进制的表示方法在这里都可以接受),输出结果在信息输出窗口中显示出来。通过命令行修改数据 例如,我们想把 p1口的值从0x02数据修改成 0x04 ,可在命令输入窗口输入p10x04”,回车即可完成,此时如果p1口接有led,将立即看到led状态改变。通过 Memory 窗口可以看到修改后的数据:在地址栏输入 d:00H然后回车。储存器1 的d:0x90后的第一个数据就变成了04 ,这正是我们刚才修改的结果。7.观察修改变量的值 在暂停程序运行时,可以观察到有关的变量值。在 监视/调用堆栈(Watch)窗口“局部”页自动显示当前正在使用的局部变量,不需要用户自

8、己添加。监视(Watch)页显示用户指定的程序变量。(先按F2键,然后输入变量的名称例如“delay”然后回车)移动鼠标光标到要观察的变量“delay”上停留大约一秒钟,就弹出一个“变量提示”块出来。将鼠标移动到一个变量名“d1”的上面,点击鼠标右键,出现快捷菜单,选中:“增加d1到观察窗口”(Add “d1” to Watch Windows) 选项,子菜单中会出现#1 和#2 的选项,点击后该变量就会加入对应的监视/调用堆栈(Watch) 窗口。增加d1到观察窗口”(Add “d1” to Watch Windows)选项后 对应的监视窗口显示了d1 的值。修改变量的数值方法:用鼠标左键点

9、击该行的变量数据栏,然后按F2 键出现文本输入栏后,输入修改的数据,确认正确后按回车键。8.复位 如果用户想重新开始运行用户程序,可以点击工具栏上的复位按钮,对仿真器的用户程序进行复位。仿真器复位后,程序计数器PC 指针将复位成 0000H,另外,一些内部特殊功能寄存器在复位期间也将重新赋值,例如 A 将变为 00H, DPTR 变为 0000H, SP 变为 07H, I/O 口变为 0FFH,此时用户板上的 P1 口所接 LED 指示灯会全部熄灭。9.设置断点 将光标移至待设置断点的源程序行,如 “MOV P1,#0B6H”行。点击工具栏上的“断点”图标,可以看到源程序窗口中该行的左边出现

10、了一个红色的断点标记。(如果再点一下这个图标则清除这个断点)同样的方法,您可以设置多个断点。10.带断点的全速运行 按动F5 启动全速运行,全速执行程序,当程序执行到第一个断点时,会暂停下来,这时你可以观察程序中各变量的值及各端口的状态,如下图:第一个断点在mov p1,#06dh 之后,此时在储存器窗口Memory Windows”, 储存器1(Memory#1) 的地址输入栏内输入“D:000h”,按回车键后,可以从内部可直接寻址地址数据为6D 和程序设计的相同!此时用户目标板上会显示当前断点的状态,继续按动F5 启动全速运行,程序执行到第二个断点时,会暂停下来,在变量观察窗口中,RAM的

11、值应为B6;继续按动 F5 启动全速运行,程序又会执行到第一个断点处暂停,此时用户目标板上的灯又显示相应的状态。断点是仿真器调试的重要手段,请您仔细反复的练习直到熟练。清除程序中所有断点 如果想取消全部的断点全速运行时,要是逐个取消将是很烦琐的事,我们只要点击工具栏相应的图标,就可清除程序中所有断点。执行到光标处 在体验“执行到光标处”之前,我们先点击工具栏上复位的图标,对仿真器的用户程序进行复位,把鼠标放在想要停止的行点一下,再按“执行到光标处”程序全速执行到光标所在行,这与我们在前面看到的带断点的全速运行相类似。13.退出仿真 先点击调试工具栏“暂停”按钮,再点击调试工具栏的“复位”复位,

12、再点击 开启/关闭调试模式按钮,则退出仿真状态,就又重新回到编辑模式。(如果不能正确退出,请按一下仿真器上的复位按钮)此时可以对程序修改,然后重新编译,再按开启/关闭调试模式按钮,就又进入仿真模式了。请注意!由于KEIL软件在仿真状态时和仿真器始终保持通信联系,为此退出仿真的时候最好按照以上顺序退出,不要强行退出,否则容易造成电脑死机。到这里也就完成了keil软件的标准操作过程,由于KEIL操作过程较复杂,请您自行练习直到熟练!常见问题FAQ:为何仿真状态不能正确的联机?1 您可能没有正确的安装好USB 驱动,如果安装正常,系统的:控制面板系统硬件设备管理器中看到以下端口信息,表示系统已经正确

13、的安装了USB驱动。如果没有显示下面的信息,请你重新安装USB驱动或者换一台电脑安装USB 驱动:有的时候如果您更换了USB 口也可能需要重新安装USB驱动。2仿真需要keil uv2 7.0以及以上的版本软件,(有些早期版本的KEIL 不能兼容请谨慎) 并且注意这个软件必须安装在c盘的根目录,不能安装在其他的目录!建立文件的时候,也不要保存在其他的目录,更不要使用中文的文件名和文件夹。3串口的选择是否正确(如果是新系统没有安装其他usb设备一般是com3)?由于仿真/烧写都需要用到串口,为此:仿真操作时, 必须关闭掉XLISP烧写软件,串口调试等可能用串口的软件。4 仿真器是否已经复位?请按

14、一下仿真器的复位键,注意短按一下, 喇叭 “滴”的响一下表示复位ok. 如果是长按3秒以上喇叭“滴滴”响两下,是脱机运行状态并不是复位, 需要重新按复位。您可能没有把keil的通信速度设置到115200。所有的选项如果您没有把握,必须严格按照上面说明的严格进行。5 检查一下晶体频率设置,至少您要选择一个晶体系统才能运行,如果对此有疑问请您改一个晶体频率。6检查您的仿真头的方向插入是否正确?特别注意,仿真头的第一脚(红色)对应cpu的第一脚。可以用万用表检查一下。如果插入目标板反了,则系统可能会发热,灯变暗, 请立即调换方向。7您的目标板可能本身不正常,没有正确的时钟和复位(虽然这些不是仿真器所

15、必需的)您可以用直接烧片的方式运行,如果运行正常,则表示目标板正常。8被仿真的目标板需要另外供电吗?仿真头本身可以提供5v500MA的电源供给外部目标板使用,一般情况下已经足够51系统的使用,如果您感觉不够也可以在外部目标板另外供给5V电源并联运行,系统设计了完善的保护,不会导致损坏。9为何有些端口没有动作?有可能是仿真头接触不良,最好是打开仿真器的外壳用万用表量一下并自行修复,相信对您不是难事。10被仿真的目标板的时钟和复位还有效吗?在使用51TRACER仿真器的时候,目标板的时钟和复位都被仿真器接管,无论目标板是否有时钟和复位。11为何程序运行不正常?C51用户请在您的代码的main()函

16、数前面,加上一句:char code dx5163 _at_ 0x003b;ASM汇编用户请将你的主程序跳过中断区直到0050H以后,如:org 0000Hljmp mainorg 0050Hmain:.;程序开始如果以上设置你没有做,在装载过程中,仿真器会发出“嘀嘀嘀” 的三声短声报警,这时的仿真结果将可能不正确。现在随着技术的发展,CPU的00-40H之间已经越来越多的被新的寄存器占用,而不是以前的00-30H,养成良好的程序书写习惯很重要。如果您的程序是30H,请你改为40H或者以后如50h,80h,如果您有所疑问请您仔细参考本光盘的测试程序举例中中的例子,都是修改过的。12 如果无法确认异常,请在程序下载进去后再长按复位键3秒,程序直接运行,如果脱机运行结果也不正确,请检查您的程序编写的问题。13仿真的概念就是模拟,51TRACER不能保证完全真实的仿真所有51资源,如果您对仿真的状态有疑问,请您用直接烧片的方式运行。如果要仿真2051,用户可参考51和2051对应的管脚资料自制一个转接头。一般我们建议您直接用51仿真,编程序时避开2051没有的资源。(仿真器连接示意图连接USB到电脑,连接仿真头到目标用户板,注意晶体选择到您想要的频率)51TRACER仿真XL2000照片

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1