版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、©MicrochipMPLAB® C18c编译器用户指南® 2004 Microchip Technology Inc.DS51288C.CN木出版物中所述的器件应用信息及其它类似内容仅为您提供便 利.它们可能由更新之信息所怦代.确保W用符介技术规范.是 您fl M ay负的疔in Microchip对这些佰息不作任何明示或暗 示、书面或口头的声明或担保,包括但不限于什对其使用情况、 质量.性能.适销性或转定用途的适用性的声明或担保 Microchip对闵这些们息及使川这此倍息而引起的麻果不水担任 何资任.未经Microchip ”面批准.不得将Microchip
2、的广胡用 作生命维持系统中的关键组件.在Microchip知讥产权保护下. 不得略中或以其它方式转让任何许町证。QUALITY MANAGEMENT SYSTEMCERTIFIED BY DNV=ISO/TS 16949:2002 =请注意以下有关Microchip器件代码保护功能的要点, Microchip的产胡均达到Microchip数撫乎册中所述的技术指标. Microchip确信:在止常使用的悄况卜' Microchip系列户晶是今币场上同类户品中瑕安全的产胡Z % H前.仍"在着恶氐其至是非法破坏代码保护功能的行为。就我们所知衍右这些行为都不是以Microchip中
3、规泄的操作规范来使用Microchip产品的。这样做的人极町能侵犯了知识产权。 Microchip愿与那些注垂代码完整性的客户介作. Microchip或任何妊它半导体厂商均无法保证实代码的安金件代码保护并不意味秆我们保证产品是"I:不可破”的.代码保护功能处于持续发展中.Microchip承诺将不新改进产品的代码保护功能.任何试图破坏Microchip代码保护功能的行为均可视 为违反了技字T年版权法案(Digital Millennium Copyright Act) > -如果这种行为导致他人在未絵授权的情况下.施访问您的软 件或応它受版仪保护的成果.您仃权依拡该法案捉血诉
4、讼.从而制止这种行为.商标Miaochip 的名称和ftH小纽合、Microchip 做杯.Accuron. dsPICx KeeLoq. microlD. MPLAB、PIC、PICmicro. PICSTART, PRO MATE> PowerSmart. rfPIC 和 SmartShunt 均为Micrxhip Technology Inc. 4处国利其它国家或地区的汴 册商标。AmpLab. FilterLab. MXDEV. MXLAB. PICMASTER. rfPIC、SEEVAL, SmartSensor 和 The Embedded Control Solutions
5、 Company 均为 Microchip Technology Inc.右关 IH 的江 册ifii标。Analog-for-the-Digital Age、Application Maestro、 dsPICDEM, dsPICDEM.net. dsPICworks. ECAN. ECONOMONITOR, FanSense. FlexROM. fuzzyLAB. In-Circuit Serial Programming. ICSP、ICEPIC. Migratable Memory. MPASM. MPLIB. MPLINK. MPSIM、 PICkit. PICDEM. PICDEM
6、.net. PICLAB. PICtaik PowerCak Powerinfo. PowerMate. PowerTook rfLAB. rfPICDEM. Select Mode、Smart Serial、SmartTel 和 Total Endurance 均为 Microchip Technology Inc. (集川利其它IH家或地区的備杯。 SQTP 於 Microchip Technology Inc.力头国的服务标记。在此提及的所仃其它楠杯均为备持仃公詞所伏© 2004, Microchip Technology Inc;册权所仃。Microchip位丁 MN &am
7、p;利W蓉州Chan&e和Tempe及位你科稲卅 Mountain g的金球总部、“V询溺曲I 2003 10 <沁 “ ISO/TS6949:2002 威量体系认.PlCmicro 8 : 机、kcclo-y/A eeprom讪儿机外议次住$血粘和模应户;A方闻的质录体系漁(V为符介SO/TS、349.2002此外. Microchip /珀 価讹H和生产方血的质墩体系也已通过TISO9001:2000 畑DS51288C CN 第 # 页空 2004 Microchip Technology Inc.MPLAB®C48C 编译器用户指南i¥Miurxhip
8、前言第4章简介1.1 概述1.2 调用编译器1.2.1生成输出文件1.2.2屯示诊断信息1.2.3定义宏1.2.4选择处理器1.2.5选择模式第2章语法说明2.82.9数据类型及数值范用2.1.1整熨2.1.2浮点型字节存储顺序 一Endianness 存储类别2.3.1 Overlay2.3.2 static型函数参数存储限定符2.4.1 near/far数据存储对彖2.4.2 near/far程序存储对象2.4.3 ram/rom 辽符包含文件搜索路径2.5.1系统头文件2.5.2用户头文件预定义宏名与ISO的差异27.1整型的提升2.7.2数字常最2.
9、7.3字符串常量语言的扩展2.8.1匿名结构2.8.2行内汇编Pragma伪指令.2112 2202.9.3#pragma tpragma #pragma #pragma #pragmasectiontype interruptlow frame /interrupt fnamevarlocate bank variable-ncme varlocate "section-nam©*1 variabl©-nam©22针对处理器的头文件针对处理器的寄存器定义文件配置字31333535© 2004 Micro
10、chip Technology Inc.DS51288C_CN 第 iii 页MPLAB® C18 C编译器用户指南第3章运行时模型3.1 存储模型373.2 关丁调用的约定383.2.1返回值393.2.2管理软件堆栈403.2.3 C语言与汇编语言的混合编程403.3 启动代码453.3.1默认操作453.3.2 定制463.4 编译器管理的资源46第4章优化4.1 介并相同的字符串494.2 转移优化504.3 存储区选择优化504.4 W寄存器内容跟踪514.5 代码排序514.6 尾部合并524.7 删除执行不到的代码534.8 复制传递534.9 冗余存储删除544.10
11、删除死代码554.11过程抽彖55第5章示例应用程序附录A COFF文件格式A.1 struct filehdr 文件头61A.1.1 unsigned short f_magic61A. 1.2 unsigned short f_nscns61A.1.3unsigned long f_timdat61A. 1.4unsigned long f_symptr61A.1.5unsigned long f_nsyms61A. 1.6unsigned short f_opthdr61A.1.7unsigned short f_flags62A.2 struct opthdr uj选文卜头62A.2.
12、1unsigned short magic62A.2.2unsigned short vstamp62A.2.3unsigned long proc_type62A.2.4unsigned long rom_width_bits64A.2.5unsigned long ram_width_bits64A.3 struct scnhdr 段头64A.3.1union _s65A.3.2unsigned longs_size65A.3.3unsigned longs_scnptr65A.3.4unsigned longs_relptr65A.3.5unsigned longs_lnnoptr65A
13、.3.6unsigned shorts_nreloc65A 3.7unsigned shorts_nlnno65A.3.8 unsigned long s_f lags66DS51288C CN 第 v 页© 2004 Microchip Technology Inc.目录A.4 struct reloc 旋定位i己录66A.4.1unsigned long r_vaddr66A.4.2unsigned long r_symndx66A.4.3short r_of fset66A.4.4unsigned short r_type67A.5 struct syment符号表记录68A.
14、5.1union _n68A.5.2unsigned long n_value68A.5.3short n_scnum69A.5.4unsigned short n_type69A.5.5char n_sclass70A.5.6char n_numaux70A.6 struct cof f_lineno 行 号记录71A.6.1unsigned long l_srcndx71A.6.2unsigned short l_lnno71A.6.3unsigned long l_paddr71A.6.4unsigned short l_flags71A.6.5unsigned long l_fcnnd
15、x71A.7 struct aux_file 源文件的附加符号表记录71A.7.1unsigned long x_of f set71A.7.2unsigned long x_incline71A.7.3unsigned char x_f lags72A.8 struct aux_scn 段的附加符号表记录72A.8.1unsigned long x_scnlen72A.8.2unsigned short x_nreloc72A.8.3unsigned short x_nlinno72A.9 struct aux_tag st rue t/union/enum 标记名的附加符号表记录.72A.
16、9.1unsigned short x_size72A.9.2unsigned long x_endndx72A. 10 struct aux_eos struct/union/enum 结束的附加符号表记录73A.10.1unsigned long x_tagndx73A.10.2unsigned short x_size73A.11 struct aux_fcn 函数名的附加符号表记录73A.11.1unsigned long x_tagndx.73A.11.2unsigned long x_lnnoptr73A.11.3unsigned long x_endndx.73A.11.4sho
17、rt x_actscnum73A.12 struct aux_fcn_calls Ffi数调用的附加符号表记录74A.12.1unsigned long x_calleendx74A.12.2unsigned long x_is_interrupt74A.13 struct aux_arr 数组的附加符号表记录74A.13.1unsigned long x_tagndx74A.13.2unsigned short x_size74A.13.3unsigned short x_dimen X_DIMNUM74A.14 Struct aux.eobf 块或函数结尾的附加符号表记录75A.14.1u
18、nsigned short x_lnno75© 2004 Microchip Technology Inc.DS51288C CN 第 V 页MPLAB® C18 C编译器用户指南A.15 struct aux_bobf 块或函数开头的附加符号表记录75A.15.1 unsigned short x_lnno75A.15.2 unsigned long x_endndx75A. 16 struct aux_var struct/union/enum的附加符号表记录75A.16.1 unsignedlong x_tagndx75A.16.2 unsignedshortx_si
19、ze75A. 17struct aux_field 位域的附加记录76A.17.1 unsignedshortx_size76附录B采用ANSI定义的方式B. 1简介77b.2标识符(B.3字符77B.4整型78B.5浮点数78B.6数组和指针79B.7寄存器79B8结构和联合79B.9位域79B.10枚举80B 11Switch语句80B.12预处理伪指令80附录C命令行概述附录D MPLAB C18诊断D.1错误83D.2警告93D. 3消息95附录E扩展模式E. 1源代码兼容性97E.1.1栈帧大小97E.1.2 static型参数97E.1.3 overlay 关键字97E.1.4行内
20、汇编98E.1.5预定义宏98E.2命令行选项差别99E.3COFF文件差别99E.3.1 一般处理器99E.3.2文件头的f_flags字段99术语表101索引107全球销售及服务网点114DS51288C CN 第 vii 页© 2004 Microchip Technology Inc.MPLAB®C48C 编译器Microchip用户指南简介© 2004 Microchip Technology Inc.DS51288C.CN 第 1 页关于本指南本文档论述MPLAB®C18编译器的技术细,并讲丝MPLAB C18编详器的所仃功 能。这里假定读者
21、已经具备如卜基本索质:知道如何编写C程序知道如何使用MPLAB集成开发环境创建和调试项冃已经阅读并理解了所使用单片机的数据于册© 2004 Microchip Technology Inc.DS51288C.CN 第 # 页© 2004 Microchip Technology Inc.DS51288C.CN 第 # 页文档内容编排文档内容编样如E:第1章:简介一捉供对MPLABC18编译器的概述以及仃关调用编译器的信息。第2章:语法说明一论述MPLAB C18编译辭与ANSI标准的不同Z处。第3章 运行时模型一论述MPLAB C18编译器如何利用PIC18PICmicro
22、® 片机 的资源。第4章:优化一论述MPLAB C18编译器执行的优化功能。第5章:示例应用程序一给出一个示例应用程序,并就本用户指南中论述的外主 题.对源代码进行了说明附录A: COFF文件格式一详细阐述了 Microchip的COFF格式。附录氏采用ANSI定义的方式一论述按照ANSI标准的要求.MPLAB C18实现所 定义的执行方式.附录C:命令行概述一列出了命令行选项以及论述每个命令行选项的参考荒节。附录D: MPLAB C18诊断一列出了错谋.警告和消息。附录E:扩展模式一论述菲扩展模式和扩展模式Z间的区别.© 2004 Microchip Technology
23、 Inc.DS51288C.CN 第 # 页© 2004 Microchip Technology Inc.DS51288C.CN 第 # 页© 2004 Microchip Technology Inc.DS51288C.CN 第 # 页MPLAB® 88 C编译器用户指南本指南中使用的约定本用户指南便用如卜文档约定:文档约定描述表示示例代码(Courier字体儿Courier字体乐例源代码distance 一= time * speed;文件务和路径c:mccl8h关键字asmr endasmz static命令行选项0pa+, Opa斜休 Courier可变
24、参数file.o, K中可以是任何仃效的文件名方括弓可选的参数mccl8(opt iono file opt ions J省略号代瞽重复的文木示例varename . var name表示由用户提供的代码void main (void) (OxnnnnI六进制数.其中刀代表I 六进制位OkFFFF, 0x007A文档(Arial字体八斜体字符|参考书籍MPLAB User's Guide文档更新所冇的文档将來都会过时,本指南也不例外.为满足客户的需要,MPLABC18在不断 发展之中,本文档屮对j某些工具的描述可能与实际有所星别请逢录我公司网站获 得垠新的文档。文档命名约定文档用“DS
25、”号編号。编号位于毎页的页脚,在页码Z前.DS号的命名约定为DSXXXXXA 或 DSXXXXXA_CN,其中:XXXXX = 文档号。A=文档的版本._CN = 文档为中文版.DS51288C CN 第 3 页空 2004 Microchip Technology Inc.刖旨PIC18参考读物readme.c18关于使用MPLAB C18 C编译辭的最新富息,请阅读本软件自带的readme.c18文件 (ASCII文本).此fl述文件包含了木文档可能未提供的更新信息。MPLAB®C48C 编译器入门(DS51295C_CN)描述如何安装MPLAB C18编译器,如何编写简单的程序
26、以及如何便用安装了编译器 的 MPLAB IDE oMPLAB® C18C 编译器函数库(DS54297C-CN关J-MPLAB C18库文件和预编译I标文件的参考指南。列出了随MPLAB C18 C提供 的所有库幣数,并详细描述了这些库旳数的便用.MPLAB® IDE V6.XX 快速入门指南(DS54284C_CN)描述如何安装MPLAB IDE软件,如何使用它來创建项H及烧丐器件。MPASM User's Guide with MPLINK Linker and MPLIB Librarian (DS33014) 讲述如何使用 Microchip PICmic
27、ro MCU $1.编器(MPASM).链接器(MPLINK)和 库管理器(MPLIB).PICmicro® 18C单片机系列参考手册(DS39500A.CN鱼点介绍增强空单片机系列。说明了增强型单片机系列的架构和外设模块的I作原理, 但没有涉及到每个器件的具体细节。PIC18 Device Data Sheets and Application Notes讲述PIC18器件工作和电气特性的数据手册。应用笔记介绍了如何使用PIC18器件。 要获得上而列出的任何文档,请访问Microchip的网站(),获得 Adobe Acrobat ( pdf)格式的文档。© 2004 M
28、icrochip Technology Inc.DS51288C CN 第 # 页前亘c语言参考读物American National Standard for Information Systems 一 Programming Language 一 C. American National Standards Institute (ANSI), 11 West 42nd. Street, New York, New York, 10036.此标准规定了用C语靑编写程序的格式,并对C程岸进行了解释。其片的是提高C 程序在多种计算机系统上的可移杭性、可靠性、可维护性及执行效率。Beatman,
29、John B. Embedded Design with the PIC18F452 Microcontroller, First Edition. Pears on Educatio lnc.» Upper Saddle River, New Jersey 07458.点介绍Microchip公f可的PIC18FXXX系列单片机以及如何编写优化的应用代码。Harbison, Samuel P. and Steele, Guy L., CA Reference Manual, Fourth Edition. Prentice-Hall, Englewood Cliffs, New J
30、ersey 07632.详细地讲述了 c编程语言。这本书是一本权威性的参考手册,它对c语言、运行时 库以及C编程的凤格都进行了完整的描述,C编程强调正确性、可移植性和可维护 性。Kernighan, Brian W. and Ritchie, Dennis M. The C Programming Language, Second Edition. Prentice Hall, Englewood Cliffs, New Jersey 07632.对山ANSI标准定义的C语育进行了简刃阐述。对J-C程序员來说足本出色的参 考书。Kochan, Steven G. Programming In
31、ANSI C, Revised Edition. Hayden Books, Indianapolis, Indiana 46268.学习ANSI C的另一本出色的参考书,用作大学教材。Van Sickle, Ted. Programming Microcontrollers in C, First Edition. LLH Technology Publishing, Eagle Rock, Virginia 24085.尽管这木书主要讲的是Motorola单片机,但其屮单片机C语言编程的基本原理是 很冇用的。© 2004 Microchip Technology Inc.DS51
32、288C CN 第 5 页前亘MICROCHIP 网站Microchip网站为您提供在线支持.客户很容易从Microchip网站上获得文件和信息. 要访问此网站,您必须能访问互联网并雯安装Netscape Navigator® 或 Microsoft® Internet Explorer 等网络浏览器,使用您再欢的Internet 览器.町以访问Microchip的网站: 网站提供多种服务。用八从网站上诃以卜徴到放新开发工具的文件、数据手册、应用 笔记、用户指南、文章和示例程序。也可以获得关于Microchip业务的具体信息,包括 销俗办少处、分销商和工厂代表的列表.技术支
33、持常见问题(FAQ)在线讨论组一关于产品、开发系统、技术信息及其它方而的讨论会. Microchip顾问il划成员列表到苴它与Microchip产品相关的其它仃用网站的链接工程师工具箱设计技巧器件勘误表其它信息眾新Microchip新闻稿研讨会和活动列表招删职位开发系统客户通知服务Microchip启动了客户通知服务,來帮助客户轻松获得关J: microchip产品的最新信 息.订阅此项服务后,每当您指定的产品系列或感兴趣的开发工具有更改、更新.改 进或有妙误时,您都会收到电子邮件通知。登Microchip网站(),点山“客八变更通知”。按!紺旨 示注册.开发系统产品组分类如卜:编译器仿真器在
34、线调试器 MPLAB IDE编程器© 2004 Microchip Technology Inc.DS51288C CN 第 # 页前亘卜而是对这曲类别的描述:编译器一关J Microchipif器和只它语言工八的瑕新仏禹 这些工具包括MPLABC17. MPLABC18 和 MPLAB C30 C 编译給 MPASM 和 MPLAB ASM30 汇编器; MPLINK和MPLAB LINK30 H标链接器:MPLIB和MPLAB LIB30 I标库管理器。仿真器一关J: Microchip在线仿真器的最新信息.包括MPLAB ICE 2000和MPLAB ICE 4000o在线调试
35、器一关J- Microchip在线调试器的尿新信息,包括MPLAB ICD 2。MPLAB IDE 关于Microchip MPLAB IDE的最新信息,它是开发系统I具的 Windows® 集成开发环境(介绍 MPLAB IDE、MPLAB SIM 仿真器.MPLAB IDE项目借理器以及i般的编紺和调试功能。编程器一关J: Microchip器件编程器的眾新信息。包括MPLAB PM3和PRO MATE® II器件编樫盟.以及PICSTARf® Plus圧发编程器.客户支持Microchip产品的用门可通过卜列渠道获得文持:分销商或代表当地销住办事处应用工程师
36、(FAE)应用工程师(CAE)执线客户可以致电氏分销商.代表或应用丁程师(FAE)寻求支持。请茂看木手册后封而 的销倡办事处及地址列农。砍获得技术支持,可访问网站.也可致电应用工程师 (CAE),中国大陆地区请拨打800-820-6247o此外还仃系统信息和更耶热线。此热线为系统用户捉供开发系统软件产品眾新版本的 列衣。此热线还提供仃关客八如何获得日前更新匸具包的信息。热线号码为:美国和加皇人人部分地IX.请拨打1-800-755-2345.全球其它国家或地区,请拨© 2004 Microchip Technology Inc.DS51288C CN 第 7
37、 页Microchip1.1 槪述MPLAB®C48C 编译器 用户指南第1章简介© 2004 Microchip Technology Inc.DS51288C.CN 第 # 页MPLAB C18编译器是适用于PIC18PICmicro单片机的独立而优化的ANSIC编译器。 仅在ANSI标准X3.159-1989与高效的PICmicro单片机支持有冲突的情况此编译 器才会& ANSI标准的所偏离.此编译器是一个32位Windows Y台应用程序,弓 Microchip的MFLAB IDE尢全册容,它允许便用MFLAB ICE仕线仿TU仁 MPLAB ICD 2在线
38、调试器或MPLAB SIM软件模拟器进行源代码级训试。MPLAB C18编译器有以卜特点:与ANSI *89兼容能集成到MPLAB IDE,便J:进彳j:项E管理和源代码级调试能生成可熏定位的冃标模块.增强代码的重用性与由MPASM汇编器生成的目标模块兼容,允许在同个项目中自由地进行汇编语 言和C语言的混合编程对外部存储器的读/写访问足透明的当需要进行实时控制时能很好地支持行内汇编具有多级优化的高效代码生成引擎拥有广泛的库支持.包括PWM、SPI叫l2C. UART、USART、字符串操作和 数学函数库用户能对数据和代码的存储空间分配进行完全控制1.2 调用编译器MPLA决C18 C编译辭入门
39、(DS51295C_CN)拙述了如何住MPLAB IDE中便用 C18编译器。也叫以通过命令行调用编译器,斋令行用法如卜:mccl8 options file options可以指定一个源文件和任意个命令行选项。-help命令行选项列出编译器接受的所仃 命令行选项。-verbose命令行选项便编译器在编译结束时显示版本号以及错谋、警 告和消息的总数等信息.© 2004 Microchip Technology Inc.DS51288C.CN 第 # 页© 2004 Microchip Technology Inc.DS51288C.CN 第 # 页© 2004 M
40、icrochip Technology Inc.DS51288C.CN 第 # 页MPLAB® 88 C编译器用户指南1.2.1 生成输出文件默认情况卜,编译器会生成一个名为file.。的输出冃标文件,其中,住"是在命 令行上指定的源文件几 不包括扩展名。可通过-£。命令行选项改变输出口标文件"。 例如:mccl8 -fo bar.o foo.c如果源文件仃错谋,那么编译器会生成一个名为file.err的错误文件苴中. file在命令行上指定的源文件名.不包括扩展名。町通过-fe命令行选项改变错谋 文件名。例如:mccl8 -fe barerr foo.
41、c12.2 显示诊断信息诊断信息可通过F和-IW命令行选项控制。-W命令行选项设置警告诊断的级别(1. 2或3。表列出了警告诊断的级别以及所表示的诊断类®o-nw命令行选项 禁止特左的消息(附录D或-help-message-list命令彳J选项列出山编译器生成 的所的消息)。使用一help-message-all命令行选项,可得到关于所仃消息的帮 助。若要获得关于某个待定诊断的帮助,可使用-help-message命令行选项.例 如:mccl8 help-message=2068会显示以下结果:20681 obsolete use of implicit int1 detected
42、The ANSI standard allows a variable to be declared without a base type being specified, e.g. r "extern x;wr in which case a base type of 1 int is implied. This usage is deprecat皀d by the standard as obsolete, and therefore a diagnostic is issued to that effect 表仁1:警告级别警告级别所表示的诊断1错误(致命的利非致命的)2级別
43、1加警告3级别2加消息DS51288C CN 第 9 页© 2004 Microchip Technology Inc.简介1.2.3 定义宏-D命令行选项允许定义宏。可以用如卜两种方式Z-指定-D命令行选项:-Dmame或 -Dnamevalueo -Dname'AL义宏名为name并役怎其值为1 : -Dna/ne=va丄ue宦义宏名 为name并设定其值为valuer例如:mccl8 -DMODE定义了宏MODE,其值为1, Iftj:mccl8 -DMODE=2定义左MODE的值为2。使用-D命令行选项的个例子是条件编译,例如:#if MODE = 1x - 5;#e
44、lif MODE = 2x = 6;# elseX = 7;#endif1.2.4选择处理器默认帖况卜MPLABC18针对般的PIC18PICmicro单片机编译应用程序。町以利 用processor命令行选项指定为某个特定的处理器生成冃标文件,其中 processor指定要使用的处理器型号例如.耍生成仅供PIC18F452使用的H标文 件.应该使用命令行选项-pl8f452e命令行选项-pl8cxx明确指能针对-般的 PIC18 PICmicro单片机编译源文件。12.5选择模式編巴工作在如下两种不同的工作模式:扩式和非扩展模式。工作在扩展模式 时.编译器使用扩展指令(即 ADDFSR、AD
45、DULNK、CALLW. MOVSF、MOVSS、 PUSHL、SUBFSR和SUBULNK)和立即数变址寻址,这种寻址方式通常需耍较少的指 令來访问基堆栈的变量(因此山用较小的程序存储空何)。匚作在牢扩展模式时, 编译器不便用扩展指令或匸即数变址寻址。-extended和-no-extended命令行 选项告知编译器丁作模式.表仁2概括了阜于所指定命令行选项的編详器匸作模式© 2004 Microchip Technology Inc.DS51288C CN 第 # 页MPLAB® 88 C编译器用户指南表仁2:模式选择-p extended-p no-extended-
46、pl8cxx不指定 編译器-extended扩展错误扩展扩展-no-extended非扩展非扩展非扩展非扩展不指定非扩展非扩展非扩展非扩展注, 如果便MJ mccl8 -help调用编译器,将显示关编译器丁作在非扩展模式的帘 助:但是,当编译器工作在非扩展模式时,不是所有的命令行选頊都有效。要査看 关于编译湍工作在扩展模式时的帮助 W该使用命令行选项mccl8 extended help。注:其它命令行选项将在本用户指南的后面部分中论述.化附录C中可以找到对所右命令行选项的概括。DS51288C.CN 第 11 灭© 2004 Microchip Technology Inc.Mic
47、rochipMPLAB®C48C 编译器 用户指南第2章语法说明2.1 数据类型及数值范围2.1.1 整型© 2004 Microchip Technology Inc.DS51288C.CN 第门页MPLABC18编译器支持由ANSI启义的标准整型。标准整型的数值范阳如农2-1所 示。另外 MPLAB C18 还支持 24 位整short long int (或 long short int),分为仃符号和无符号两种类型.表2-1也列出了 24位整熨的数值范帀表2-1:整型数据的长度及数值范围类型长度最小值最大值Cha"】®8位128127signed
48、 char8位-128127unsigned char8仅0255ict16 ft32,76832,767unsigned int16位065535short16 &-32,76832,767unsigned short16&065,535short long24 &8,388,6088,388,607unsigned short long24位016777,215long32位-2,147,483,6482,147,483,647unsigned long32位04,294,967,295注15若rh«r前没何符号说明.则欢认为仃符号10.2:可通过-k命令
49、行选项便无符号说明的chair默认为无符号熨。MPLAB® 88 C编译器用户指南2.1.2 浮点型对MPLABC18來说,double或float数据类型都足32位浮点型.衷22列出了 浮点型数据的数值范用。表2-2:浮点型数据的长度及数值范围类型长度最小指数最大指数規格化的最小值规格化的Jt大值float32位1261282-12®« 1.17549435e-382128 * (2-2-15)« 6.80564693e * 38double32位-1261282-12® 1.17549435e - 382128 * (2-2"15
50、) 6.80564693e + 38MPLAB C18的浮点数格式是IEEE 754格式的改进形式。MPLAB C18恪式和IEEE 754格式的不同Z处在于数据表示的眾高9位。IEEE 754恪式的最高9位循环左移一 次将转换为MPLAB C18恪式。同理.MPLAB C18格式垃高9位循环右移-次将转换 为IEEE 754格式。表20对这两种格式作了比较.表2-3:MPLAB C18浮点格式与IEEE 754格式的对比标准指数字节字节0字节1字节2IEEE 754Sege-i C2e3e4e5e6e-jddd dddddddd dddddddd ddddMPLAB C1860e1 e2e3
51、e4e5e6e7sddd dddddddd dddddddd dddd图注:S二符号位d = M数e二指数2.2字节存储顺序 一ENDIANNESSEndianness指务字廿数据中的字肖存储顺序。MPLAB C18采用低字肖低地址 (little-endian)格式存储数据.低字节存储在较低地址中(即数据是按“低字肖先 存”的方式存储的)。例如:tpragma idata test=0x0200long 1-OxAABBCCDD;数据在存储器中的存放结果如卜:地址0x02000x02010x02020X0203醴OxDDOxCCOxBBOxAADS51288C CN 第 # 瓦©
52、2004 Microchip Technology Inc.语法说明2.3存储类别MPLAB C18 支持 ANSI 标准的存储类别(auto、extern、register、static 和 typedef)«2.3.1 OverlayMPLAB C18编译器引入了。verlay (亜磴)存储类别,仅当编译器匸作在非扩展模 式(参见125节“选择模式”)时才使用此存储类别。overlay存储类别可用丁局 部变量(但不能用J:形式参数.函数宦义或全局变呈)。overlay类别将相关变杲分配到一个持定于函数的静态取叠存诗区。这种变杲是静态分配存储空间的.但每 次进入函数时都要被初始化.
53、例如:void f (void)overlay int x = 5;x+ + ;)尽管X的存储空间是静态分配的,X在每次进入两数时都会被初始化为5.如果没仃 初始化,那么进入换数时其值是不确定的。MPLINK链接器将使不同时运行的两数屮定义为overlay的局部变量共亨存储空间。 例如,在卜而的函数屮:int f (void)overlay int x = 1;return x;)int g (void)overlay int y = 2;return y;)如果f和g永远不会同时运行,则x和y共享相同的存储空间但是.在卜而的函数 中:int f (void)overlay Int x - 1
54、;return x;int g (void)overlay int y = 2;y = c ();return y;)由于f和g可能会同时运行,x和y不能共享相同的存储空间。便用overlay局部 变员的优点是其存储空间是静态分配的,也就是说.在-般情况卜存取这种变录 所需要的指令较少(因此所生成代码占用的程序存储空间也较小。同时,由于一些 变诡町以共享相同的存储空仙 这些变量所需分配的总的数据存储空间比定义为 static时要小如果MPLINK链接器检测到包含overlay局部变杲的递归两数.就会发出错误并中 止编译。如果MPLINK链接器检测到,在任意模块中灯通过折针进行的函数调用.在 任意模块(不一定和上述模块是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度水陆联运货物保险及运输合同
- 二零二五年度新能源储能技术聘用合同8篇
- 二零二四年度信息化设备融资租赁管理合同3篇
- 课件:正确认识高职院校内部质量保证体系诊断与改进
- 二零二五年度牧草生物质能项目合作协议4篇
- 2025版农家乐民宿租赁管理服务合同2篇
- 二零二五版年薪制劳动合同:房地产企业销售精英激励方案4篇
- 第三单元 资产阶级民主革命与中华民国的建立(解析版)- 2023-2024学年八年级历史上学期期中考点大串讲(部编版)
- 2025年度个人家政服务分期支付合同范本2篇
- 二零二五年度地铁车站安全门系统采购合同
- 2024年苏州工业园区服务外包职业学院高职单招职业适应性测试历年参考题库含答案解析
- 人教版初中语文2022-2024年三年中考真题汇编-学生版-专题08 古诗词名篇名句默写
- 2024-2025学年人教版(2024)七年级(上)数学寒假作业(十二)
- 山西粤电能源有限公司招聘笔试冲刺题2025
- ESG表现对企业财务绩效的影响研究
- 医疗行业软件系统应急预案
- 使用错误评估报告(可用性工程)模版
- 2024年湖南高速铁路职业技术学院单招职业技能测试题库附答案
- 2024年4月浙江省00015英语二试题及答案含评分参考
- 黑枸杞生物原液应用及产业化项目可行性研究报告
- 2024年黑龙江省政工师理论知识考试参考题库(含答案)
评论
0/150
提交评论