要进行单片机应用系统的开发,必须有一个容易使用的软件开发环境作为基础。PIC单片机的开发环境有许多,最常用的是Microchip公司为其用户免费提供的MPLAB-IDE。
MPLAB集成开发环境(IDE)是综合的编辑器、项目管理器和设计平台,适用于使用Microchip的PIC系列单片机进行嵌入式设计的应用开发。MPLAB-IDE是以项目为导向的综合模拟调试开发环境软件,它把文本编辑器、链接器、项目管理器和一系列调试器全部集成到一个模拟开发环境下,从而形成了一套不仅功能丰富并且使用方便的软件包。通过MPLAB-IDE,单片机项目开发者可以在计算机中对PIC系列的单片机进行源程序编写、编译,甚至还能实现目标程序的模拟运行和动态调试等操作。
本书用的是MPLAB-IDE V8.33,如果想用最新版本,可以到相关网站进行下载。将MPLAB-IDE V8.33软件解压缩后,双击Install MPLAB 8 33文件进行安装,在安装过程中会弹出如图1-1所示对话框,询问是否安装HI-TECH C编译器,如果单击“是(Y)”按钮,HI-TECH C编译器会内嵌在MPLAB-IDE软件中。MPLAB-IDE安装完成后出现MPLAB图标,双击该图标即可启动MPLAB-IDE开发工具。
图1-1 询问是否安装HI-TECH C编译器
启动MPLAB-IDE软件后,里面是空的,首先必须创建项目,这类软件都是以项目为目标进行统一管理的。
执行菜单命令“Project”→“Project Wizard”,弹出如图1-2所示的项目创建向导窗口。单击“下一步”按钮,弹出如图1-3所示窗口,在此窗口中单击“Device”右侧的下拉列表按钮,可以查看各种型号的器件名称,用户可根据需要选择合适的目标芯片型号。选择完目标芯片型号后,单击“下一步”按钮,出现如图1-4所示窗口,要求用户选择合适的编译器。如果用户使用汇编语言编程,可单击“Active Toolsuite”右侧的下拉列表按钮并选择默认的“Microchip MPASM ToolSuite”,即Microchip公司的PIC单片机汇编语言编译器;如果用户使用C语言编程,可单击“Active Toolsuite”右侧的下拉列表按钮并选择默认的“HITECH Universal ToolSuite”,即选择HI-TECH PICC编译器。选择完编译器后,单击“下一步”按钮,出现创建项目文件窗口,如图1-5所示。在该窗口中单击“Browse…按钮,并选择项目文件创建的路径(注意路径不能含有中文,本项目命名为“LED test.mcw”),然后单击“下一步”按钮,出现如图1-6所示窗口。在该窗口中,要求添加已有文件到项目中,如果事先没有现成的文件或用户不想加入已有文件,可以直接单击“下一步”按钮。接着出现项目创建完成窗口,如图1-7所示。在该窗口中将会显示这一项目的摘要情况,包括所选择的目标器件、选用的编译器、项目路径及项目名称。如果确认没有问题,则单击“完成”按钮建立项目;否则可单击“上一步”按钮,再一步一步地退回并更改相应内容。
图1-2 项目创建向导窗口
图1-3 选择目标芯片
图1-4 选择编译器
图1-5 创建项目文件
图1-6 添加已有文件到项目中
图1-7 项目创建完成
项目创建后,回到MPLAB-IDE的主界面,如图1-8所示。如果并没有显示出如图1-8所示的“LED test.mcw”项目窗口,则可执行菜单命令“View”→“Project”,以打开该窗口。
注意:
在图1-8所示的项目窗口中并没有包含任何文件,需要用户创建源程序文件。
执行菜单命令“File”→“New”,打开一个空白的源程序编辑窗口。在此窗口中输入源程序,输入完后将其保存。在保存时源程序的文件名由用户自己定义(在此定义为LED test.c),如果编写的是C语言程序,则文件的扩展名为.c。
注意:
文件名不能含有中文。
编写完源程序后,必须将该源程序加入项目中。在项目窗口中右击“Source Files”,出现快捷菜单,如图1-9所示,选择“Add Files…,即出现如图1-10所示的对话框,选择“LED test.c”,单击“打开”按钮,即可将该文件加入到项目中。
图1-8 创建好项目后回到主界面
图1-9 向项目中添加文件
文件加入项目后,执行菜单命令“Project”→“Build”或按F10功能键,即可对项目中的源程序进行编译。编译、链接的结果如图1-11所示。如果源程序代码书写有错误,则会在“Output”窗口中输出错误信息,并指定错误所在行。用户在错误原因上双击即可自动定位到源程序代码出错行位置,根据错误原因修改即可。建议读者要养成先修改第一个错误的好习惯,因为后续错误有可能是第一个错误引起的,第一个错误改正后,其后错误也许就没有了。
图1-10 将源程序加入项目中
图1-11 编辑、链接完成的结果
至此,这个程序已建立完毕,并编译、链接通过,生成了名为LED test.cof的目标代码文件。该文件可供调试器调用,以进行源码级的调试。同时,还生成了名为LED test.hex的目标文件。如果有硬件电路,可以将LED test.hex文件通过下载器固化到目标芯片中。
在MPLAB-IDE内部集成了模拟调试软件MPLAB SIM,通过该调试软件可以模拟仿真源程序的运行过程。
为了更好地分析代码,有时需在源程序代码的左侧显示行号。显示行号的操作如下:执行菜单命令“Edit”→“Properties”,弹出“Editor Properties”对话框,在此对话框中选择“‘C’File Types”选项卡,并选中“Line Numbers”复选框,如图1-12所示。
执行菜单命令“Debugger”→“Select Tool”→“MPLAB SIM”后,进入MPLAB SIM的调试状态。在调试状态下,MPLAB-IDE窗口底部的状态栏改变为“MPLAB SIM”;在Debugger菜单栏中将出现更多的菜单项;在Debug工具栏中出现调试工具栏图标;在Output窗口中增加了一个MPLAB SIM选项卡。调试工具栏的图标含义如表1-7所示。
表1-7 调试工具栏的图标含义
在调试状态下,执行菜单命令“Debugger”→“Reset”→“MCLR Reset”,可对MCLR复位;执行菜单命令“Debugger”→“Reset”→“Watchdog Timer Reset”,可对看门狗定时器复位;执行菜单命令“Debugger”→“Reset”→“Brown Out Reset”,进行欠压复位;执行菜单命令“Debugger”→“Reset”→“Processor Reset”,进行处理器复位。
在源程序的行前双击,可添加或删除断点,设置好断点后单击合适的调试图标可进入断点调试运行。
执行菜单命令“View”→“Watch”,空白的Watch窗口将出现。在Watch窗口的顶部有两个下拉框,标记为Add SFR的下拉框可以用来在Watch窗口中添加特殊功能寄存器;标记为Add Symbol的下拉框可以用来添加来自程序的符号(源程序中的变量)。图1-13所示的“Watch”窗口中添加了“PORTD”端口及“delayms ms”变量。
图1-12 “Editor Properties”对话框
图1-13 “Watch”窗口
执行菜单命令“View”→“File Registers”,可查看文件寄存器组中的内容,如图1-14所示。
用C语言编写的程序会占用程序存储器的一些空间。程序存储器中每个地址基本上只能存放一行汇编代码。当使用C语言编写的源程序代码项目被编译时,将产生一个列表文件(.lst),它给出了C代码转换成汇编和机器语言代码。列表文件可用来评估使用了程序存储器多少空间。执行菜单命令“View”→“Disassembly Listing”,进入反汇编列表,可查看列表文件。图1-15为LED test.c源程序的反汇编列表,从图中可以看出断点也出现在反汇编列表中,列表文件给出了每行C代码产生的汇编开销,同时还显示了每条汇编指令在程序存储器中的地址及指令的十六进制值(机器语言代码)。
图1-14 文件寄存器组窗口
图1-15 反汇编列表
执行菜单命令“View”→“Program Memory”,可以查看程序存储器的使用情况,如图1-16所示。执行此命令,汇编语言和机器语言代码都将显示,包括代码在程序存储器中所占用的地址。
执行菜单命令“View”→“Special Function Register”,将弹出如图1-17所示的特殊功能寄存器窗口。在此窗口中,可以查看相应的特殊功能寄存器中的状态。
有时要分析一些断点的运行时间,如子延时函数的延时时间。在调试状态下,可以先执行菜单命令“Debugger”→“Settings”,在弹出的仿真设置窗口中选择“Osc/Trace”选项卡,更改晶振工作频率,如图1-18所示。再执行菜单命令“Debugger”→“Stopwatch”,弹出如图1-19所示的对话框。然后单击调试工具栏中的相应图标,即可观看每次执行的时间。
图1-16 程序存储器窗口
图1-17 特殊功能寄存器窗口
图1-18 仿真设置窗口
图1-19 跑表窗口