内容发布更新时间 : 2024/11/8 15:04:34星期一 下面是文章的全部内容请认真阅读。
MPASM 汇编器总会生成文件名与源文件(.asm 文件)名相同的目标文件(.hex 文件)。编译时会打开一个状态窗口,显示编译的进度和最后的结果。编译完成后自动关 闭该窗口。 同时还将打开Output 窗口,Output 窗口没有出现红色警告或错误信息, 而且最后一句显示“BUILD SUCCEEDED”,就表示编译成功了:
如果编译失败,请检查以下各项,然后重新编译项目:
1.检查在编辑器窗口中输入的所有代码的拼写和格式。如果在Output 窗口中报告有错,双击该错误就会在源代码窗口左侧的灰色区域中以绿色箭头指出源代码中出错的行。
2.检查用于该项目及其项目文件的语言工具是否正确。
为初学者解释几个概念:.
.asm 文件是我们用汇编语言(一种类似英语缩写的语言)写的源程序,但单片 机无法识别和运行源程序,单片机只能看懂由0和1组成的机器码,因此这里需要一个 “翻译”的过程,称为“编译”或“汇
编”,编译的作用就是把单片机无法识别的汇编源程序翻译成单片机能识别的机器码,由于机器码是最终在单片机上运行的代码,因此也称为目标代码,其后缀是.hex。
另外,整个“翻译”的过程是由一个小小的工具软件完成的,它就是MPLAB IDE 自带的MPASM汇编器。当您选择Project>Build All的时候,系统会自动调用MPASM汇编器,自动完成整个编译过程。
十二、 为调试烧写目标代码
在调试之前,必须把目标代码烧写到目标单片机中。选择Debugger>Program,把目标文件exam1.hex(目标文件中包括的就是目标代码)烧写到实验板上的PIC16F877A中。烧写可能需要几分钟时间。在烧写过程中, Output 对话框的MPLAB ICD 2 选项卡下会显示目前的操作阶段。Output 窗口没有出现红色的警告或错误信息,而且 倒数第3句显示“?Programming succeeded”,就表示烧写成功了:
提醒:进入调试模式的一个必要条件是,开发板或您的应用系统已经加了晶振。如编程器模式下烧写没问题,但调试器模式下烧写不成功,通常是开发板或您的应用系统忘了装上晶振! 注意:初学者容易将Debugger(调试器)下拉菜单下的Program(编程)命令和 Programmer(编程器)下拉菜单下的Program(编程)命令混为一谈,其实这是两个作用完全不同的命令,切记:在调试器模式下,必须使用调试器下拉菜
单下的Program 命令,同样,在编程器模式下,必须使用编程器下拉菜单下的Program命令!!!同 时也不要以为:在编程器模式下已经执行“Program”命令了,因此切换到调试器模 式时,就可以不用执行了调试器模式下的“Program”命令了,这是大错特错的,反 之也是一样。
Debugger(调试器)下拉菜单下和Programmer(编程器)下拉菜单下还有许多命令字面上一样,但实际功能是不一样的,注意不要混淆! 进一步的解释,初学者可以跳过不读:
执行Debugger(调试器)下拉菜单下的Program(编程)命令时,系统会自动在用户编写程序的目标代码中加入调试执行代码,调试执行代码会自动烧写到程序存储器的高端地址,以便用“ICD2 PIC仿真烧写器”来进行调试。执行Programmer(编程器)下拉菜单下的Program(编程)命令时,只将用户编写程序的目标代码烧写到程序存储器中,和一般单片机的编程性质完全一致,由此可见,这两个编程命令的作用是完全不同的。
十三、在调试器模式下运行 exam1 进入调试模式后,工具栏会多出调试器快捷工具条,见下图:
从左到右分别是
1.run –全速运行
2.halt –暂停
3.animate –自动单步(或称为慢速运行)
4.step into –单步运行(子程序内部也单步运行)
5.step over --单步运行(子程序内部代码被全速执行,整个子程序被作为单步运 行中的一步来执行的)
6.step out --跳出子循环(当程序运行在子程序中时,可以使用它直接运行完该子程序)
7.reset –复位
MPLAB ICD 2 在调试器模式下可以实时或单步执行代码,实时执行代码又称“全速运行”,当然调试器模式下的“全速运行”与单片机脱离开发系统独立运行时 的“全速运行”还是有区别的,单步执行代码又称“单步运行”。
我们首先执行调试器模式下的“全速运行”。 选择Debugger>Run (或点击Run 工具栏按钮)。
如果我们编写的程序没有错误,我们将在开发板上看到8个LED显示8位二进制递增数。但遗憾的是,8个LED上面什么也没有显示,程序没有按我们的要求运行,说明 程序有错误,不必担心,利用调试器模式下的单步运行、变量观察窗口、断点等调试手段可以查找出任何错误。
先选择Debugger>Halt(或点击Halt 工具栏按钮)来中止程序执行。
十四、 调试 exam1
1.我们首先在把累加值输出到LED的那一行设置断点。在需要设置断点的语句上双击, 这一行的行首就出现如下图所示的断点标记了(红色的B 停止标记)
2.打开一个新的Watch 窗口,来观察随着程序的执行输出端口(PORTD)寄存器值的变化。选择
View>Watch。从Add SFR 按钮旁边的列表中选择“PORTD”,再点击这个按钮,PORTD加到了Watch窗口中,
如下图所示: