《PIC微控制器项目设计:C语言》一3.3 MPLAB XC8编译器-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

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

简介: 本文讲的是PIC微控制器项目设计:C语言一3.3 MPLAB XC8编译器,本节书摘来华章计算机《PIC微控制器项目设计:C语言》一书中的第3章,第3.3节, PIC Microcontroller Projects in C: Basic to Advanced, Second Edition〔塞浦路斯〕 多甘·易卜拉欣(Dogan Ibrahim) 著许辉 吕汶译 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

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所示的打开的窗口。
screenshot
步骤2 向下移动右侧光标,然后单击图标创建新项目(Create New Project)。如图3.4所示选择默认的Categories:Microchip Embedded,Projects:Standalone Project,我们正在创建一个新的独立项目。
screenshot
步骤3 单击下一步,选择目标微控制器。如图3.5所示,图中显示的内容为Family: Advanced 8- bit MCUs(PIC18)和Device: PIC18F8722。
步骤4 单击下一步,选择硬件工具为PICkit 3,如图3.6所示。
步骤5 单击下一步,选择编译器XC8,如图3.7所示。
screenshot
步骤6 单击下一步,为项目命名。在此例中,项目命名为BUTTON-LED,存储在文件夹C:UsersDogan MPLABXProjects中。单击设置主项目(Set as main project)选项,如图3.8所示。
screenshot
步骤7 单击完成(Finish)以创建所需的项目文件。
步骤8 右键单击左侧窗口上的源文件(Source Files),然后选择新建(New)→主文件(C Main File),将新源文件命名为NEWMAIN(扩展名为.C),如图3.9所示。
screenshot
步骤9 单击完成(Finish),应该可以得到一个空的模板C文件,如图3.10所示。

screenshot

步骤10 通过为程序插入以下行来修改文件。只要按下按键开关S1(连接到端口引脚RB0上),程序就会点亮连接端口引脚RD0的LED。有关MPLAB X IDE中部分程序清单的信息,请参见图3.11。
程序描述如下:
程序开头的#include 语句用于标识使用的微控制器,并调用合适的头文件,该头文件中包括处理器在程序开始的特殊定义(注
意mikroC Pro for PIC编译器不需要头文件)。
screenshot
screenshot
screenshot配置语句#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]包含的所有处理器的列表及每个处理器中所有可能的配置选项列表。
screenshot语句#define S1 PORTBbits.RB0将符号S1定义为端口引脚RB0。类似地,语句#define LED PORTDbits.RD0将符号LED定义为微控制器的端口引脚RD0。
screenshot微控制器的时钟频率定义为10MHz。
screenshot在主程序开始时,端口引脚RB0被配置为输入端口。类似地,RD0配置为输出端口。
screenshot通过将MEMCON的EBDIS位置1使能PORTD的I/O功能(参见PIC18F8722数据手册)。
screenshot然后程序进入检查开关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

screenshot

在这个简单的例子中,我们将编写一个程序,以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中编码的程序,调试程序的步骤如下所示:
screenshot单击构建和调试主项目(Build for Debugging Main Project)(见图3.14)编译程序以便进行调试。
screenshot
screenshot
screenshot单击调试主项目的程序设备(Program Device for Debugging Main Project)加载目标微处理器(见图3.15)。
screenshot
screenshot单击调试(Debug)→离散调试(Discrete Debugger Operation)→启动调试器主项目(Launch Debugger Main Project)以启动调试器(见图3.16)。应该看到显示的信息为目标复位(Target reset)。
screenshot
screenshot按F7单步执行程序,按F8键可以跳过延迟函数。在单步执行程序时,应该能够看到LED点亮和熄灭。
可以利用鼠标单击程序左侧栏上的数字在程序中设置断点。或者,可以单击调试(Debug)→新断点(New Breakpoint)来设置断点。
单击窗口(Window)→PIC存储器视图(PIC Memory Views),然后选择所需的显示,可以观察程序存储器、特殊功能寄存器(SFR)、配置位和EE数据。

screenshot
图3.17显示了SFR列表。

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接