整理keil调试经验.docx
- 文档编号:23312342
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:12
- 大小:436.55KB
整理keil调试经验.docx
《整理keil调试经验.docx》由会员分享,可在线阅读,更多相关《整理keil调试经验.docx(12页珍藏版)》请在冰豆网上搜索。
整理keil调试经验
KEIL调试高级技巧
在调试状态,Debug菜单项中的命令可以使用了,有关编译的工具栏按钮消失了,出现了一个用于运行和调试的工具栏,Debug菜单上的大部份命令都有相应的快捷按钮。
从左到右依次是复位、运行、暂停、单步跟踪、单步、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮命令;
然后按一下图示第二个“运行”按钮。
连接上相关的实验资源,本实验用一条8PIN的数据排线把实验仪的CPU部份的P1口(JP44)连接到八路指示灯部份的JP32。
这时你会看到实验仪的八个红色LED,轮流点亮,表示运行成功,也可以查看相关的变量和参数,非常方便。
⒈单步跟踪运行
使用菜单Debug->Step或上图第四个单步运行按钮或使用快捷键F11可以单步跟踪执行程序,在这里我们按下F11键,即可执行该箭头所指程序行,每按一次F11,可以看到源程序窗口的左边黄色调试箭头指向下一行,如果程序中有Delay延时子程序,则会进入延时程序中运行。
⒉单步运行
如果Delay程序有错误,可以通过单步跟踪执行来查找错误,但是如果Delay程序已正确,每次进行程序调试都要反复执行这些程序行,会使得调试效率很低,为此,可以在调试时使用F10来替代F11(也可使用菜单StepOver或相应的命令按钮),在main函数中执行到Delay时将该行作为一条语句快速执行完毕。
为了更好的进行对比,我们重新进入仿真环境,将反汇编窗口关闭,不断按F10键,可以看到在源程序窗口中的左边黄色调试箭头不会进入到延时子程序。
⒊全速运行
点击工具栏上的“运行”按钮或按F5键启动全速运行,全速执行程序,此时用户板上的P1口所接LED以流水灯状态显示。
⒋暂停
点击工具栏上的按钮,此时用户板上的P1口所接LED停止以流水灯状态显示,只有一个LED灯点亮(取决于暂停前的P1的值)。
⒌观察/修改寄存器的值
Project窗口在进入调试状态后显示Regs页的内容,包括工作寄存器R0~R7的内容和累加器A、寄存器B、堆栈指针SP的内容。
用户除了可以观察以外还可自行修改,例如将寄存器a的值0x62改为0x85。
方法一:
用鼠标点击选中单元a,然后再单击其数值位置,出现文字框后输入0x85按回车键即可;
方法二:
在命令行窗口,输入A=0x85,按回车键将把A的数值设置为0x85
6.观察/修改存储器的数据
点击菜单“视图View->储存器窗口MemoryWindows”,便会打开储存器Memory窗口(如窗口已打开,则会关闭),Memory窗口可以同时显示4个不同的存储器区域,点击窗口下部分的编号可以相互切换显示。
在储存器1(Memory#1)的地址输入栏内输入“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”,按回车键后,可以从xdataRAM区域0000H地址处开始显示。
通过Memory窗口修改数据
在Memory窗口中显示的数据可以修改。
例如,要改动data区域OXE0地址的数据内容:
把鼠标移动到该数据的显示位置,按动鼠标右键在弹出的菜单中选中:
更新储存器“ModifyMemoryatD:
0xE0”,在弹出对话框的文本输入栏内输入相应数值,按回车键或点击OK,修改完成。
通过命令行查看数据
例如,我们想查看data空间从0x01到0x03地址的内容,可在命令输入窗口输入“dd:
0x01,03H”,回车即可完成,d表示data空间,0x01表示起始地址,03H表示结束地址(注意两种16进制的表示方法在这里都可以接受),输出结果在信息输出窗口中显示出来。
通过命令行修改数据
例如,我们想把p1口的值从0x02数据修改成0x04,可在命令输入窗口输入p1=0x04”,回车即可完成,此时如果p1口接有led,将立即看到led状态改变。
通过Memory窗口可以看到修改后的数据:
在地址栏输入d:
00H然后回车。
储存器1的d:
0x90后的第一个数据就变成了04,这正是我们刚才修改的结果。
7.观察/修改变量的值
在暂停程序运行时,可以观察到有关的变量值。
在监视/调用堆栈(Watch)窗口“局部”页自动显示当前正在使用的局部变量,不需要用户自己添加。
监视(Watch)页显示用户指定的程序变量。
(先按F2键,然后输入变量的名称例如“delay”然后回车)
移动鼠标光标到要观察的变量“delay”上停留大约一秒钟,就弹出一个“变量提示”块出来。
将鼠标移动到一个变量名“d1”的上面,点击鼠标右键,出现快捷菜单,选中:
“增加d1到观察窗口”(Add“d1”toWatchWindows…)选项,子菜单中会出现#1和#2的选项,点击后该变量就会加入对应的监视/调用堆栈(Watch)窗口。
增加d1到观察窗口”(Add“d1”toWatchWindows…)选项后对应的监视窗口显示了d1的值。
修改变量的数值方法:
用鼠标左键点击该行的变量数据栏,然后按F2键出现文本输入栏后,输入修改的数据,确认正确后按回车键。
8.复位
如果用户想重新开始运行用户程序,可以点击工具栏上的复位按钮,对仿真器的用户程序进行复位。
仿真器复位后,程序计数器PC指针将复位成0000H,另外,一些内部特殊功能寄存器在复位期间也将重新赋值,例如A将变为00H,DPTR变为0000H,SP变为07H,I/O口变为0FFH,此时用户板上的P1口所接LED指示灯会全部熄灭。
9.设置断点
将光标移至待设置断点的源程序行,如“MOVP1,#0B6H”行。
点击工具栏上的“断点”图标,可以看到源程序窗口中该行的左边出现了一个红色的断点标记。
(如果再点一下这个图标则清除这个断点)同样的方法,您可以设置多个断点。
10.带断点的全速运行
按动F5启动全速运行,全速执行程序,当程序执行到第一个断点时,会暂停下来,这时你可以观察程序中各变量的值及各端口的状态,如下图:
第一个断点在movp1,#06dh之后,此时在储存器窗口MemoryWindows”,储存器1(Memory#1)的地址输入栏内输入“D:
000h”,按回车键后,可以从内部可直接寻址地址数据为6D和程序设计的相同!
此时用户目标板上会显示当前断点的状态,继续按动F5启动全速运行,程序执行到第二个断点时,会暂停下来,在变量观察窗口中,RAM的值应为B6;继续按动F5启动全速运行,程序又会执行到第一个断点处暂停,此时用户目标板上的灯又显示相应的状态。
断点是仿真器调试的重要手段,请您仔细反复的练习直到熟练。
⒒清除程序中所有断点
如果想取消全部的断点全速运行时,要是逐个取消将是很烦琐的事,我们只要点击工具栏相应的图标,就可清除程序中所有断点。
⒓执行到光标处
在体验“执行到光标处”之前,我们先点击工具栏上复位的图标,对仿真器的用户程序进行复位,把鼠标放在想要停止的行点一下,再按“执行到光标处”程序全速执行到光标所在行,这与我们在前面看到的带断点的全速运行相类似。
13.退出仿真
先点击调试工具栏“暂停”按钮,再点击调试工具栏的“复位”复位,再点击开启/关闭调试模式按钮,则退出仿真状态,就又重新回到编辑模式。
(如果不能正确退出,请按一下仿真器上的复位按钮)
此时可以对程序修改,然后重新编译,再按开启/关闭调试模式按钮,就又进入仿真模式了。
请注意!
由于KEIL软件在仿真状态时和仿真器始终保持通信联系,为此退出仿真的时候最好按照以上顺序退出,不要强行退出,否则容易造成电脑死机。
到这里也就完成了keil软件的标准操作过程,由于KEIL操作过程较复杂,请您自行练习直到熟练!
常见问题FAQ:
为何仿真状态不能正确的联机?
1您可能没有正确的安装好USB驱动,如果安装正常,系统的:
控制面板\系统\硬件\设备管理器中看到以下端口信息,表示系统已经正确的安装了USB驱动。
如果没有显示下面的信息,请你重新安装USB驱动或者换一台电脑安装USB驱动:
有的时候如果您更换了USB口也可能需要重新安装USB驱动。
(1)建设项目概况。
2仿真需要keiluv27.0以及以上的版本软件,(有些早期版本的KEIL不能兼容请谨慎)并且注意这个软件必须安装在c盘的根目录,不能安装在其他的目录!
建立文件的时候,也不要保存在其他的目录,更不要使用中文的文件名和文件夹。
3串口的选择是否正确(如果是新系统没有安装其他usb设备一般是com3)?
由于仿真/烧写都需要用到串口,为此:
仿真操作时,必须关闭掉XLISP烧写软件,串口调试等可能用串口的软件。
(2)评价范围。
根据评价机构专业特长和工作能力,确定其相应的评价范围。
4仿真器是否已经复位?
请按一下仿真器的复位键,注意短按一下,喇叭“滴”的响一下表示复位ok.如果是长按3秒以上喇叭“滴滴”响两下,是脱机运行状态并不是复位,需要重新按复位。
您可能没有把keil的通信速度设置到115200。
所有的选项如果您没有把握,必须严格按照上面说明的严格进行。
5检查一下晶体频率设置,至少您要选择一个晶体系统才能运行,如果对此有疑问请您改一个晶体频率。
2.量化环境影响后果6检查您的仿真头的方向插入是否正确?
特别注意,仿真头的第一脚(红色)对应cpu的第一脚。
可以用万用表检查一下。
如果插入目标板反了,则系统可能会发热,灯变暗,请立即调换方向。
7您的目标板可能本身不正常,没有正确的时钟和复位(虽然这些不是仿真器所必需的)您可以用直接烧片的方式运行,如果运行正常,则表示目标板正常。
(3)专项规划环境影响报告书的内容。
除包括上述内容外,还应当包括环境影响评价结论。
主要包括规划草案的环境合理性和可行性,预防或者减轻不良环境影响的对策和措施的合理性与有效性,以及规划草案的调整建议。
8被仿真的目标板需要另外供电吗?
仿真头本身可以提供5v500MA的电源供给外部目标板使用,一般情况下已经足够51系统的使用,如果您感觉不够也可以在外部目标板另外供给5V电源并联运行,系统设计了完善的保护,不会导致损坏。
1.筛选环境影响:
环境影响被筛选为三大类,一类是被剔除、不再作任何评价分析的影响,如内部的、小的以及能被控抑的影响;另一类是需要作定性说明的影响,如那些大的但可能很不确定的影响;最后一类才是那些需要并且能够量化和货币化的影响。
9为何有些端口没有动作?
有可能是仿真头接触不良,最好是打开仿真器的外壳用万用表量一下并自行修复,相信对您不是难事。
10被仿真的目标板的时钟和复位还有效吗?
2)规划实施可能对环境和人群健康产生的长远影响。
在使用51TRACER仿真器的时候,目标板的时钟和复位都被仿真器接管,无论目标板是否有时钟和复位。
11为何程序运行不正常?
(二)环境影响经济损益分析的步骤C51用户请在您的代码的main()函数前面,加上一句:
charcodedx516[3]_at_0x003b;
ASM汇编用户请将你的主程序跳过中断区直到0050H以后,如:
org0000H
ljmpmain
org0050H
main:
....;程序开始
如果以上设置你没有做,在装载过程中,仿真器会发出“嘀嘀嘀”的三声短声报警,这时的仿真结果将可能不正确。
内涵资产定价法基于这样一种理论,即人们赋予环境的价值可以从他们购买的具有环境属性的商品的价格中推断出来。
现在随着技术的发展,CPU的00-40H之间已经越来越多的被新的寄存器占用,而不是以前的00-30H,养成良好的程序书写习惯很重要。
如果您的程序是30H,请你改为40H或者以后如50h,80h,如果您有所疑问请您仔细参考本光盘的测试程序举例中中的例子,都是修改过的。
12如果无法确认异常,请在程序下载进去后再长按复位键3秒,程序直接运行,如果脱机运行结果也不正确,请检查您的程序编写的问题。
环境影响评价工程师课主持进行下列工作:
13仿真的概念就是模拟,51TRACER不能保证完全真实的仿真所有51资源,如果您对仿真的状态有疑问,请您用直接烧片的方式运行。
如果要仿真2051,用户可参考51和2051对应的管脚资料自制一个转接头。
一般我们建议您直接用51仿真,编程序时避开2051没有的资源。
(仿真器连接示意图连接USB到电脑,连接仿真头到目标用户板,注意晶体选择到您想要的频率)
(1)基础资料、数据的真实性;
51TRACER仿真XL2000照片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 keil 调试 经验