http://www.ajdz.net 爱晶电子网站 做人人都买得起的PIC精品
“汇编”或“编译”,编译的作用就是把单片机无法识别的汇编源程序翻译成单片机能识别的机器码,由于机器码是最终在单片机上运行的代码,因此也称为目标代码,其后缀是.hex。
另外,整个“翻译”的过程是由一个小小的工具软件完成的,它就是MPLAB IDE自带的MPASM汇编器或C编译器(本教程采用PICC C编译器)。当您选择Project>Build All的时候,系统会自动调用MPASM汇编器或C编译器,自动完成整个编译过程。
1.3.12 为调试烧写目标代码
在调试之前,必须把目标代码烧写到目标单片机中。
选择Debugger>Program,把目标文件exam1.hex(目标文件中包括的就是目标代码) 烧写到3ePIC PLUS开发板上的PIC16F877A中。
烧写可能需要几分钟时间。在烧写过程中, Output 对话框的MPLAB ICD 2 选项卡下会显示目前的操作阶段。Output 窗口没有出现红色的警告或错误信息,而且倒数第3句显示“…Programming succeeded”,就表示烧写成功了:
31
2006爱晶电子发明工作室 版权所有
http://www.ajdz.net 爱晶电子网站 做人人都买得起的PIC精品
提醒:进入调试模式的一个必要条件是,开发板或您的应用系统已经加了晶振。如编程器模式下烧写没问题,但调试器模式下烧写不成功,通常是开发板或您的应用系统忘了装上晶振!
注意:初学者容易将Debugger(调试器)下拉菜单下的Program(编程)命令和Programmer(编程器)下拉菜单下的Program(编程)命令混为一谈,其实这是两个作用完全不同的命令,切记:在调试器模式下,必须使用调试器下拉菜单下的Program命令,同样,在编程器模式下,必须使用编程器下拉菜单下的Program命令!!!同时也不要以为:在编程器模式下已经执行“Program”命令了,因此切换到调试器模式时,就可以不用执行了调试器模式下的“Program”命令了,这是大错特错的,反之也是一样。
Debugger(调试器)下拉菜单下和rogrammer(编程器)下拉菜单下还有许多命令
字面上一样,但实际功能是不一样的,注意不要混淆! 进一步的解释,初学者可以跳过不读:
执行Debugger(调试器)下拉菜单下的Program(编程)命令时,系统会自动在用户编写程序的目标代码中加入调试执行代码,调试执行代码会自动烧写到程序存储器的高端地址,以便用MPLAB ICD 2 来进行调试。执行Programmer(编程器)下拉菜单下的Program(编程)命令时,只将用户编写程序的目标代码烧写到程序存储器中,和一般单片机的编程性质完全一致,由此可见,这两个编程命令的作用是完全不同的。
1.3.13 在调试器模式下运行exam1
进入调试模式后,工具栏会多出调试器快捷工具条,见下图:
从左到右分别是 1.run –全速运行 2.halt –暂停
3.animate –自动单步(或称为慢速运行) 4.step into –单步运行(子程序内部也单步运行)
2006爱晶电子发明工作室 版权所有
32
http://www.ajdz.net 爱晶电子网站 做人人都买得起的PIC精品
5.step over --单步运行(子程序内部代码被全速执行,整个子程序被作为单步运行中的一步来执行的)
6.step out --跳出子循环(当程序运行在子程序中时,可以使用它直接运行完该子程序) 7.reset –复位
MPLAB ICD 2 在调试器模式下可以实时或单步执行代码,实时执行代码又称“全速运行”,调试器模式下的“全速运行”与单片机脱离开发系统独立运行时的“全速运行”没有太大的区别,单步执行代码又称“单步运行”。
我们首先执行调试器模式下的“全速运行”。 选择Debugger>Run (或点击Run 工具栏按钮)。
如果我们编写的程序没有错误,我们将在开发板上看到8个LED显示8位二进制递增数。但遗憾的是,8个LED上面什么也没有显示,程序没有按我们的要求运行,说明程序有错误,不必担心,利用调试器模式下的单步运行、变量观察窗口、断点等调试手段可以查找出任何错误。
先选择Debugger>Halt(或点击Halt 工具栏按钮)来中止程序执行。
1.3.14 调试exam1
1.我们首先在把累加值输出到LED的那一行设置断点。在需要设置断点的语句上双击,这一行的行首就出现如下图所示的断点标记了(红色的B 停止标记):
2006爱晶电子发明工作室 版权所有 33
http://www.ajdz.net 爱晶电子网站 做人人都买得起的PIC精品
2.打开一个新的Watch 窗口,来观察随着程序的执行输出端口(PORTD)寄存器值的变化。选择View>Watch。从Add SFR 按钮旁边的列表中选择“PORTD”,再点击这个按钮,PORTD加到了Watch窗口中,如下图所示:
2006爱晶电子发明工作室 版权所有 34
http://www.ajdz.net 爱晶电子网站 做人人都买得起的PIC精品
3.现在我们调整源程序窗口和观察窗口的大小,使它们同时可见,这样便于观察源程序的执行和被观察寄存器数据的变化:
2006爱晶电子发明工作室 版权所有 35