用PICC 编译器对pic07.C 源程序进行编译
Ofweek 2021-12-06

        接前文:单片机教程:C语言程序设计(八)

  3.pic07.C源程序的编译

  在《PIC 单片机C 语言程序(八)》一文中,我们已在MPLAB IDE7.40 集成开发环境中编辑了pic07.C 源程序(0~99 秒脉冲发生器)。对于PIC 单片机来说,所有的C 语言源程序,都要在进行编译并生成目标码.hex 文件后,方能烧写到PIC 单片机中运行,即每编辑一个C 程序都要进行一次编译,所以对C 程序(pic0.7c)的编译操作是十分重要的。下面详细介绍用PICC 编译器对pic07.C 源程序进行编译并生成目标码.hex文件的全过程。

  (1)编辑源程序

  根据《PIC 单片机C 语言程序(八)》一文介绍的方法,在MPLAB IDE7.40 运行界面中编辑源程序pic07.C,并存盘,如图29 所示。

  (2)建立项目project

  点击图29 中菜单栏的项目project,在其下拉菜单中点击“project wizard”(项目向导)命令,即可生成图30 所示的Welcome !(欢迎)界面。该界面的项目向导可帮助你配置一个新项目。

 

  

  图29

 

  

  图30

 

  (3)选择器件

  点击图30 中的“下一步”,弹出“STep ONe:

  Select a device”(第一步:选择器件)对话框,如图31(a)所示。如果对话框中的器件(Device)不是PIC16F84A, 可点击该对话框中的三角形下拉按钮, 并在下拉菜单中选择器件( 这里是PIC16F84A),完成器件选择,如图31(b)所示。

 

  

  a

 

  

  b

  图31

 

  (4)选择需要的语言工具

  点击图31(a) 中的“下一步”,弹出“StepTwo: Select a languagetoolsuite”( 第二步:选择语言工具) 对话框, 如图32 所示。对于C 语言程序的编译工具,只需满足“Active Toolsuite : Hl-TECH PICCToolsuite”(PICC 工具) 的标识字母要求,如图32所示。如果不符合,则点击该标识字母右边的三角形按钮,并在弹出的下拉菜单中选择“HI-TECHPICC Toolsuite”即可。

 

  

  图32

 

  (5)命名项目名

  点击图32 中的“ 下一步”, 弹出“stepT h r e e : N a m e y o u rproject”(第三步:添加项目名)对话框。分别在该对话框的“ProjectName”( 项目名) 栏输入“pic07”,在“ProjectDirectory”(项目路径)栏输入“e:\pic07” ,如图33 所示。

 

  

  图33

 

  (6)增加节点(Add)

  点击图33 中的“下一步”,然后在生成的如图34 所示的界面中点击“确定”,得到类似图35 的对话框(这里未列出)。用鼠标拉动其左边滑块,找到pic07.C 文件名并点击之,再点击命令Add(增加节点),就完成了第四步step Four 添加C 程序。(pic07.C)节点到项目的操作,如图35 所示。

 

  

  图34

 

  

  图35

 

  (7)完成建立项目

  点击图35 中的“ 下一步”,弹出建立项目已经完成界面,如图36 所示。点击图36 中的“完成”,即可生成如图37 所示的“项目树”窗口。

 

  

  图36

 

  

  图37

 

  (8) 完成C 程序的编译以生成目标码.hex

  点击图29 工具栏中左数第6 个图标(Buildall)命令,或点击菜单栏中的“Project”并在其下拉菜单中点击“Build all”命令,即可生成“output”(输出)信息提示窗口,如图38 所示。其最下面一行“BUILD SUCCEEDED……”为编译成功提示。

 

  

  图38

 

  到此,对pic07.C 源程序的编译全部完成,并生成了目标码。hex。这时,就可用PIC 单片机的任何一种编程器调用.hex 文件,对单片机进行烧写了。

  (9)错误提示及修改

  如果我们在MPLAB 中编辑的源程序pic07.c 有错误,例如把pic07.c 延时函数中的unsigned(关键字——无符号)写成了umsigned,如图39所示,则经过上述编译操作后,会得到一个编译程序失败提示文件(BUILD FAILED),如图40 所示。

 

  

  图39

 

  

  图40

  在该文件中会指出源程序pic07.c 中的所有错误行及错误类型(原因),即源文件中的行“Error”指示。我们只要点击该文件中的“Error”,即可生成如图41 所示的pic07.c 源程序文件。在其左侧有一箭头指向pic07.c 的对应错误行,即“umsigned”。

 

  

  图41

 

  这时,只需将umsigned 改写成unsigned,然后在MPLAB 中存盘,再如前述,一步一步地编译,即可完成程序编译,生成。hex 文件。

  说明:本文给出的图形界面与实际界面相比,仅是略去了其空白区域或取其主要部分(版面受限),不会影响读者的学习操作过程。另外,虽然不同版本的MPLAB IDE 对C 程序的编译过程稍有差别,但只要熟练掌握了一种较高版本MPLAB IDE的操作方法,其他版本MPLAB 的使用便不成问题。

  PICC 编译器还可对PIC 单片机的汇编语言、。ASM 进行汇编,其操作方法与对C 语言源程序的编译过程相似,不同之处仅在第二步stepTwo(见图32)选择语言操作时,点击“ActiueToolsuite”右边的三角形按钮,在其下拉菜单中选择“Microchip MPASM Toolsuite” 即可, 如图42 所示,其余操作不变。

 

  

  图42

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
热门推荐
  • 相关技术文库
  • C语言
  • 编程
  • 软件开发
  • 程序
  • 你所写的程序有多大?该怎么看?

    程序写好并编译后生成hex文件,这个hex文件就是要下载到单片机里的文件,这个文件的大小不能超过单片机的FLASH大小,否则就要优化程序或者选用更大FLASH的

    前天
  • 浮点数与IEEE格式转换

    1. 问题的提出笔者在系统开发中采用RS485实现单片机与外围设备的通信,通信采用通用串行接口协议(USS),按照串行总线的主从通讯原理来确定访问的方法。USS

    01-19
  • SYS/BIOS的一种实时软件组件技术

    XDCtools 是SYS/BIOS引用的一种实时的软件组件技术(RTSC),它包括一些有用的工具,标准的API函数,静态配置文件和打包(packaging)操

    01-19
  • C常用的循环语句

    [导读]单片机延时程序分析应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单

    01-18
  • C51中延时子程序设计时要注意的问题

    [导读]标准的C语言中没有空语句。但在单片机的C语言编程中,经常需要用几个空指令产生短延时的效果。这在汇编语言中很容易实现,写几个nop就行了。在keil C5

    01-18
  • Linux lseek函数详解

    Linux应用编程之lseek详解1、lseek函数介绍(1)、文件指针:当我们要对一个文件进行读写时,一定要先打开这个文件,所以我们读写的所有文件都是动态文件

    01-17
  • C51怎样实现混合编程?

    [导读]在C51中,怎样嵌入汇编语言程序?怎样进行处理实现混合编程?答:其方法是用编译控制指令“#pragma src”、“#pragma asm”和“#pra

    01-17
  • 汇编语言文件中对于函数的调用方法

    [导读]如何在C51文件和汇编语言文件中相互调用对方文件中的函数?答:汇编语言文件中对于函数的调用方法,与调用汇编语言中的函数一样,如:LCALL DISPLA

    01-17
  • C51函数代码编写两条

    [导读]1.编写一C51函数,把从键盘输入的5位十进制数数转换成一个无符号整型数(假设未超出整型数范围)。设从键盘输入的数存放在一无符号数组中,低位数为低下标元

    01-17
  • 入门基础之单片机C代码

    [导读]1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数

    01-17
  • 17条嵌入式C语言的小技巧

    1.流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。 如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。 因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件

    01-06
  • 12条C51编程经验

    1、头文件:#include  2、预定义:sbit LED = P1^0 // 定义 P1 口的 0 位为 LED    注1:“P1^0”这个写法,与 A51 不同(A51 是 P1.0),P1 是一组端口,端口号范围 0~7。 注2:sbit 用于定义 SFR(特殊功能寄存器)的位变量,上例中 LED 作为“全局变量”进行

    01-06
下载排行榜
更多
广告
X
广告