富士通 16 位微控制器
C 语言手册
提高篇
富士通复旦应用研究中心
前言
说明
假设读者已经掌握了使用 C 语言编写程序的技术 如果读者没
有掌握这一技术
可以参考市面上的一些书目 还可以在原来的一
些 Dos 下的一些 C 开发环境下进行练习
如 Borland 公司的 Dos 下
的 TC 或者 BC 编译器
手册中的例子都经过验证 相应的编译器的版本是
V30L02
汇编器的版本是
V30L04
链接器的版本是
V30L05
要注意的是
有的例子直接使用在编译时会有警告提示 有的例子直接使用在链
接时会有出错提示
如果读者对照英文的 C 语言手册来看 会发现
两者有些差别
那是因为英文手册所对应的编译器/汇编器/链接器的
版本号较低
为此在中文手册中作了修正
目录
前言.............................................................................................................1
目录.............................................................................................................1
第一章 C预处理器 .................................................................................1
第一节 预处理和编译的结构.............................................................................2
第二节 宏定义.....................................................................................................3
一. 不带参数的宏定义...................................................................................3
二. 带参数的宏定义.......................................................................................4
第三节 文件包含(#include 指令) .......................................................................6
第四节 条件编译.................................................................................................7
第五节 其它预处理指令.....................................................................................9
第二章 C编译器 ...................................................................................10
第一节 编译的结构........................................................................................... 11
第二节 C编译器的数据调用协议...................................................................12
一. 内存模式和数据在内存中的存储格式.................................................12
二. 与汇编语言程序的接口.........................................................................18
三. SECTION.................................................................................................20
四. 函数调用接口.........................................................................................28
五. 中断函数调用接口.................................................................................34
六. C 编译器的限制...................................................................................36
第三节 C编译器的特殊扩充...........................................................................38
一. 嵌入汇编.................................................................................................38
二. 中断相关的函数.....................................................................................41
三. I/O 变量的定义 .......................................................................................46
四. direct 变量的定义 ...................................................................................47
五. 近程/远程变量(或函数)的定义.............................................................48
六. 函数的内嵌扩展.....................................................................................50
七. 更改 SECTION 名..................................................................................52
八. 寄存器区的设置.....................................................................................53
九. 中断级别的设置.....................................................................................54
十. 是否使用系统堆栈的设置.....................................................................55
十一. 系统堆栈/用户堆栈都可用的设置 ...................................................56
十二. 不保存寄存器的中断函数.................................................................57
十三. 内置的函数.........................................................................................58
十四. 预定义的宏.........................................................................................63
第三章 C库函数 ...................................................................................64
第一节 库函数概述...........................................................................................65
一. 库文件和内存模式..........................................................................65
二. 头文件.....................................................................................................66
三. 库文件对应的 SECTION 和内存模式..................................................66
四. 依赖于系统的库函数.............................................................................66
第二节 库函数的协作.......................................................................................68
一. 库函数协作.............................................................................................68
二. 初始化和退出函数.................................................................................68
三. 低级库函数类型.....................................................................................68
四. 标准库函数和其所需调用的低级库函数.............................................69
第三节 低级库函数的详细说明.......................................................................70
一. open 函数................................................................................................70
二. close 函数 ...............................................................................................71
三. read 函数.................................................................................................71
四. write 函数 ................................................................................................72
五. lseek 函数 ...............................................................................................72
六. isatty 函数 ...............................................................................................73
七. sbrk 函数.................................................................................................73
八. _exit 函数 ................................................................................................74
九. _abort 函数 .............................................................................................74
第四章 嵌入式 C 语言的特殊之处 ......................................................75
第一节 StartUp启动文件 .................................................................................76
一. 如果 强行 不使用 StartUp 启动文件 ..............................................76
二. 使用一个简单的 StartUp 启动文件 ......................................................77
三. 随富士通 C 编译器附带的 StartUp 启动文件 .....................................78
第二节 C语言与汇编语言互相调用以及嵌入汇编.......................................82
附录一.......................................................................................................87
1 编译选项与集成开发环境........................................................................87
附录二.......................................................................................................96
1 库函数定义的类型,宏和函数...................................................................96
富士通 16 位微控制器 C 语言手册 第一章 C预处理器
1
第一章
C
预处理器
C 预处理器是 fcc907s C 编译器(fcc907s 是富士通 16 位 MCU FFMC-16 的
编译器)的一个组成部分 在 C 语言中 通过预处理指令 可以为 C 语言本身
提供很多功能和符号等方面的扩充 可增强其灵活性和方便性 预处理指令只
在程序编译时起作用 且通常是按行进行处理的 因此常又称为编译控制行
编译器在对整个程序进行编译之前 先对程序中的编译控制行进行预处理 然
后再将预处理的结果与整个 C 语言源程序一起进行编译 产生汇编文件 常用
的预处理指令有: 宏定义 文件包含和条件编译 预处理命令以符号 # 开
头