PICCl8编译器命令行驱动及其应用
该选项默认的级为1(最低优先级)。优先级可以设置为l~9的任意一级(9为最高优先级)。数字表明优先级试图缩减代码的程度。对于PICCl8,高于3的优先级通常没有什么用处。
了解了命令行驱动后,对第1节中在MPLAB IDE中对C源文件进行编译的例子就有了更深入的理解。
3 命令行驱动应用
下面介绍命令行驱动在实际应用中的一些例子。通过这些例子,可以对命令行驱动的应用有一个初步的认识,并可以此为基础,对PICCl8编译器进行深入的学习和应用。
3.1 命令行驱动编译源文件
在Win2000下进行如下操作:执行"开始"→"运行"命令,然后输入"CMD";或执行"开始"→"程序"→"附件"→"命令提示符"命令,弹出cmd.exe的界面,如图1所示。若cmd.exe中出现的当前目录不是在C盘根目录下,则需要通过输入命令"cd c:\"进入C盘根目录。输入"cd htsoft\picl8\bin"命令,进入PICCl8.exe软件所在目录 (默认安装时的目录),如图2所示。
(1)编译Izqmwyz.c
输入"piccl8-18f458 lzqmwyz.c",含义是使用piccl8.exe编译器对lzqmwyz.c源文件进行编译,单片机型号为18f458(即PIC18F458单片机)。这时会输出所需要的编译结果,生成的文件中,以hex为扩展名的lzqmwyz.hex较为重要。若源程序有语法错误,还会显示出错信息及所在的行。
注意:在cmd.exe界面中进行操作时,所有的源文件均存放在PICC18.exe同一目录下(PICCl8.exe默认安装目录是c:\HTSOFT\PIC18\Bin)。在本文中,PICC18均采用此默认安装目录。这里lzqmwyz.c存放在c:\HTSOFT\PICl8\Bin下。
(2)-noerrata选项
"-noerrata"选项不使能输出代码的错误修改,而缺省时,会对编译器的输出代码有所修改。有些芯片没有正误表,不会用编译器对此修改。这个选项可以用编译器来禁止任何正误表方位。当正误表变化时,会安全禁止。对有些芯片(如PIC18F458等),PICCl8对程序的代码长度进行了限制(一般限制在0x4000之内,即16KB之内)。这就是同上的PICl8应用论坛中。有些网友提出代码有限制的原因。有些编程者则在程序中编写了下面的提示程序:
若编译的程序代码超出了这个范围,将会列出出错信息。
图3是对solar050408.c源文件编译时,代码超过了Ox4000长度时出现的提示信息。
使用-noerrata选项时,solar050408.c源文件编译就会得到正确的编译结果,命令为"piccl8-18f458solar050408.c-o-zgl-noerrata"。命令中"-o"表示调用PICCl8的优化器,"-zg1"表示调用优化器时采用的优先级为1级。
3.2 库文件生成及应用
3.2.1 C源文件
(1)包含main函数的lzqmwyzl.c源文件
(2)包含function_X3函数的funcx3.c源文件
3.2.2 生成库文件
用3.2.1中的两个文件直接创建一个应用程序,这在平时的应用中是经常用到的。这里介绍将funcx3.c源文件生成库文件,再由lzqmwyz.c调用的方法,也就是自己制作库文件进行使用。
(1)生成obj文件
将funcx3.c源文件存放在PICCl8.exe同一目录下,然后在cmd.exe中输入"PICCl8-18f458-C funcx3.c"。-C选项是将几个源文件编译成目标文件(.obj文件)。这里是将funcx3.c的源文件编译成funcx3.obj文件,然后就可以在c:\HTSOFT\PICl8\Bin目录下找到funcx3.obj文件。
(2)生成lib库文件
在cmd.exe中输入"libr r fun.lib runcx3.obj"。其中r选项为替换模块。fun.lib是由函数funcx3.c制作的库文件的文件名,如图4所示。
3.2.3 库文件应用
图5是使用3.2.1的lzqmwyzl.c源文件和调用3.2.2制作的库文件fun.1ib的工程。这时使用到的就只有lzqmwyzl.c源文件和fun.1ib文件,而不必再应用包含runetton_X3函数的funcx3.c源文件。
结语
PICCl8编译器命令行驱动在实践中有许多应用,只有了解了它,才能对C编译器有更多、更深入的认识。限于篇幅,本文只起抛砖引玉的作用,提供一种思路供广大编程者参考;同时,对于PICC也有相应的参考价值。
- 嵌入式软件工程师必须知道的:volatile的作用(05-01)
- SPARC高性能处理器集成开发环境及其编译器设计与实现(02-14)
- 编译原理 —— 编译器各阶段工作(02-14)
- ARM体系结构下的程序设计经验(08-03)
- Linux下C编程基础之:gcc编译器(08-13)
- 高效的C编程之:C编译器及其优化(08-30)