且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器

更新时间:2022-05-04 07:24:02

3.3 MPLAB XC8编译器

本文讲的是PIC微控制器项目设计:C语言一3.3 MPLAB XC8编译器,MPLAB XC8编译器是为PIC10/12/16/18系列微控制器开发的强大的C编译器(也有用于24位和32位PIC微控制器的版本)。MPLAB XC8编译器有3个版本:Pro、Standard和Free。在本书中,我们将使用免费版本。不同版本之间的主要区别是编译期间应用程序的优化级别。
XC8编译器必须在安装了MPLAB X IDE之后再安装。编译器可以在MPLAB X IDE的最后安装阶段进行安装。或者,可从Microchip科技公司网站(http://www.microchip.com/pagehandler/en_us/devtools/mplabxc/)上直接进行安装。在写作本书的时候,最新版本的编译器是v1.20。
XC8语言与mikroC Pro for PIC语言有许多相似之处。在本章中,我们将介绍一个简单的基于XC8项目的步骤,还将解释两种语言之间的相似性和差异。
例3.1 一个简单的项目
本节给出一个简单的项目,以展示使用MPLAB X IDE创建源文件、编译文件,以及使用PICkit 3将生成的hex文件下载到Explorer板上的PIC18F8722微控制器中的步骤。
在这个项目中,我们将使用按键开关S1和连接到端口RD0引脚上的LED。只要按下按键,程序将点亮LED。
解决方案3.1
步骤如下。
步骤1 双击图标以启动MPLAB X IDE,应该看到图3.3所示的打开的窗口。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
步骤2 向下移动右侧光标,然后单击图标创建新项目(Create New Project)。如图3.4所示选择默认的Categories:Microchip Embedded,Projects:Standalone Project,我们正在创建一个新的独立项目。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
步骤3 单击下一步,选择目标微控制器。如图3.5所示,图中显示的内容为Family: Advanced 8- bit MCUs(PIC18)和Device: PIC18F8722。
步骤4 单击下一步,选择硬件工具为PICkit 3,如图3.6所示。
步骤5 单击下一步,选择编译器XC8,如图3.7所示。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
步骤6 单击下一步,为项目命名。在此例中,项目命名为BUTTON-LED,存储在文件夹C:UsersDogan MPLABXProjects中。单击设置主项目(Set as main project)选项,如图3.8所示。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
步骤7 单击完成(Finish)以创建所需的项目文件。
步骤8 右键单击左侧窗口上的源文件(Source Files),然后选择新建(New)→主文件(C Main File),将新源文件命名为NEWMAIN(扩展名为.C),如图3.9所示。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
步骤9 单击完成(Finish),应该可以得到一个空的模板C文件,如图3.10所示。

《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器

步骤10 通过为程序插入以下行来修改文件。只要按下按键开关S1(连接到端口引脚RB0上),程序就会点亮连接端口引脚RD0的LED。有关MPLAB X IDE中部分程序清单的信息,请参见图3.11。
程序描述如下:
程序开头的#include 语句用于标识使用的微控制器,并调用合适的头文件,该头文件中包括处理器在程序开始的特殊定义(注
意mikroC Pro for PIC编译器不需要头文件)。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器配置语句#pragma config MCLRE=ON,WDT=OFF,OSC=HS定义处理器的配置。这里,使能主清零(复位),关闭看门狗定时器,并且选择外部高速晶振作为时钟源。安装XC8编译器的docs目录中的文件pic18_chipinfo.html[通常是文件夹:C: Program Files (x86) Microchip xc8 v1.20 docs pic18_chipinfo.html]包含的所有处理器的列表及每个处理器中所有可能的配置选项列表。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器语句#define S1 PORTBbits.RB0将符号S1定义为端口引脚RB0。类似地,语句#define LED PORTDbits.RD0将符号LED定义为微控制器的端口引脚RD0。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器微控制器的时钟频率定义为10MHz。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器在主程序开始时,端口引脚RB0被配置为输入端口。类似地,RD0配置为输出端口。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器通过将MEMCON的EBDIS位置1使能PORTD的I/O功能(参见PIC18F8722数据手册)。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器然后程序进入检查开关S1的循环语句。每当开关被按下时(即当S1变为0时),LED点亮。
步骤11 通过单击构建主项目(Build Main Project)按钮(显示为锤子)编译程序。程序编译成功后,应该显示加载完成(Loading completed)消息。
步骤12 将PICkit 3编程器/调试器连接到Explorer板上。单击创建和编程设备主项目(Make and Program Device Main Project)按钮将程序加载到Explorer板的目标微控制器中。当目标微控制器正在编程时,你应该能看到Programming和Programming/Verify complete的消息。
步骤13 当按下S1按键时,连接到RD0的LED应当被点亮(见图3.12)。
例3.2 闪烁的LED

《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器

在这个简单的例子中,我们将编写一个程序,以1s的间隔闪烁Explorer板上的所有LED。
解决方案3.2
所需的程序命名为FLASH.C,其清单如图3.13所示。注意,在此程序中使用了内置函数Delay10KTCYx(n)来创建1s的延迟。此函数创建一个10?000×n指令周期的延迟,使用10MHz时钟时,指令周期为10/4 = 2.5MHz,周期为0.4μs。因此,Delay10KTCYx的每个单位对应于0.4μs×10?000 = 4ms。要生成1s的延迟,参数应为1000/4 = 250。
例3.3 在调试模式下运行
在本节中,我们将看到如何调试例3.2中编码的程序,调试程序的步骤如下所示:
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器单击构建和调试主项目(Build for Debugging Main Project)(见图3.14)编译程序以便进行调试。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器单击调试主项目的程序设备(Program Device for Debugging Main Project)加载目标微处理器(见图3.15)。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器单击调试(Debug)→离散调试(Discrete Debugger Operation)→启动调试器主项目(Launch Debugger Main Project)以启动调试器(见图3.16)。应该看到显示的信息为目标复位(Target reset)。
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器按F7单步执行程序,按F8键可以跳过延迟函数。在单步执行程序时,应该能够看到LED点亮和熄灭。
可以利用鼠标单击程序左侧栏上的数字在程序中设置断点。或者,可以单击调试(Debug)→新断点(New Breakpoint)来设置断点。
单击窗口(Window)→PIC存储器视图(PIC Memory Views),然后选择所需的显示,可以观察程序存储器、特殊功能寄存器(SFR)、配置位和EE数据。

《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器
图3.17显示了SFR列表。

单击窗口(Window)→调试(Debugg-
ing)并选择所需的功能可以监视程序中的变量、断点、调用堆栈等。

原文标题:PIC微控制器项目设计:C语言一3.3 MPLAB XC8编译器