这书详细介绍PIC单片机设计的C语言编程设计方式,上半部分详尽解读C语言的基本要素,后半一部分重点关注PIC以及外场部件。本书设计风格简约清楚,知识要点、编码实例、编程练习都重点围绕工程项目实践活动要求。这书不规定阅读者具有C语言或硬件插口的准备专业知识,新手可边学练逐渐修习,而有一定基本的程序猿则可从作者共享的实战经验中获利。
目录
- 目 录
- Embedded C Programming: Techniques and Applications of C and PIC MCUS
- 出版者的话
- 译者序
- 前言
- 第1章 C语言概述和程序结构 1
- 1.1 C源代码 1
- 1.2 注释 1
- 1.3 程序结构 1
- 1.4 C预编译指令 1
- 1.5 函数 2
- 1.6 声明 2
- 1.7 语句和表达式 2
- 1.8 时间 3
- 1.9 输入准确度 3
- 1.10 文本格式 4
- 1.11 兼容性 4
- 1.12 小结 4
- 1.13 练习 4
- 1.14 测验 6
- 第2章 常量 8
- 2.1 位、字节等 8
- 2.1.1 位 8
- 2.1.2 半字节 8
- 2.1.3 字节 8
- 2.1.4 内存大小 8
- 2.2 C常量语法 9
- 2.2.1 二进制 9
- 2.2.2 十进制 10
- 2.2.3 有符号整数 10
- 2.2.4 十六进制 11
- 2.2.5 八进制 12
- 2.2.6 浮点数 13
- 2.2.7 定点数 13
- 2.2.8 字符 14
- 2.2.9 字符串 14
- 2.2.10 真和假 15
- 2.2.11 常量 15
- 2.3 三字母词 15
- 2.4 兼容性 16
- 2.5 设计文档 16
- 2.6 小结 17
- 2.7 练习 17
- 2.8 测验 17
- 第3章 预编译指令 20
- 3.1 标准预编译指令 20
- 3.1.1 #def?ine id text 20
- 3.1.2#include 或#include “f?ilename” 21
- 3.1.3#ifdef、#ifndef、#else、#endif和#undef 21
- 3.1.4 #if、#else、#elif和#endif 22
- 3.1.5 #error 22
- 3.1.6 #nolist和#list 23
- 3.2 兼容性 23
- 3.3 非标准编译指示 23
- 3.3.1 #warning 23
- 3.3.2 #use delay 23
- 3.3.3 关于频率 24
- 3.3.4 #use rs232(options) 24
- 3.3.5 #fuses options 24
- 3.3.6 #locate id = address 25
- 3.3.7 #byte id=x和#word id=x 25
- 3.3.8 #bit id=x.y 26
- 3.3.9 #reserve address 26
- 3.3.10 引导加载程序 26
- 3.3.11 #rom address={data} 26
- 3.3.12 #id data 27
- 3.3.13 其他编译指示 27
- 3.4 小结 27
- 3.5 练习 28
- 3.6 测验 28
- 第4章 变量和数据类型 31
- 4.1 数据类型 31
- 4.1.1 字符 31
- 4.1.2 整数 31
- 4.1.3 兼容性 32
- 4.1.4 整数格式 32
- 4.1.5 枚举类型 33
- 4.1.6 定点数 33
- 4.1.7 浮点数 33
- 4.1.8 帮助 34
- 4.1.9 浮点格式 34
- 4.1.10 空类型 35
- 4.1.11 类型定义 35
- 4.2 变量声明 35
- 4.2.1 标识符 36
- 4.2.2 变量作用域 36
- 4.2.3 变量生命周期 37
- 4.2.4 附加限定词 38
- 4.3 设计资料 38
- 4.4 RAM 39
- 4.5 小结 39
- 4.6 练习 40
- 4.7 测验 40
- 第5章 表达式和运算符 43
- 5.1 数学运算符 43
- 5.2 兼容性 43
- 5.3 运算符优先级 43
- 5.4 表达式类型和类型转换 44
- 5.5 关系运算符 45
- 5.6 位运算符 46
- 5.7 兼容性 46
- 5.8 赋值运算符 47
- 5.9 自增/自减运算符 47
- 5.10 其他运算符 48
- 5.11 序列点 49
- 5.12 表达式示例 49
- 5.13 小结 50
- 5.14 练习 50
- 5.15 测验 50
- 第6章 语句 53
- 6.1 语句定义 54
- 6.1.1 if语句 54
- 6.1.2 while循环 56
- 6.1.3 for循环 58
- 6.1.4 跳转语句 59
- 6.1.5 switch/case语句 60
- 6.2 副作用 61
- 6.3 嵌套、缩进和括号的使用 62
- 6.4 设计文档 62
- 6.5 程序复杂度 63
- 6.6 小结 64
- 6.7 练习 64
- 6.8 测验 65
- 第7章 函数 68
- 7.1 main()函数 68
- 7.2 函数定义 69
- 7.3 函数参数 70
- 7.4 高级特性 71
- 7.4.1 兼容性 71
- 7.4.2 引用参数 71
- 7.4.3 默认参数 71
- 7.4.4 重载函数 71
- 7.5 返回值 72
- 7.6 内联函数 72
- 7.7 嵌套函数 73
- 7.8 递归函数 73
- 7.9 序列点进阶 73
- 7.10 结构良好的程序 73
- 7.11 设计文档 75
- 7.12 实现细节 75
- 7.13 小结 76
- 7.14 练习 76
- 7.15 测验 76
- 第8章 数组 80
- 8.1 数组初始化 80
- 8.2 常量数组 80
- 8.3 字符串变量 81
- 8.4 无下标数组 81
- 8.5 多维数组 81
- 8.6 索引范围 82
- 8.7 数组使用示例 82
- 8.8 查找表 83
- 8.9 数组搜索 84
- 8.10 数组排序 85
- 8.11 小结 86
- 8.12 练习 86
- 8.13 测验 87
- 第9章 结构体 90
- 9.1 结构体嵌套和结构体数组 91
- 9.2 结构体在内存中的存储 91
- 9.3 位字段 92
- 9.4 联合体 92
- 9.5 程序中的结构体示例 93
- 9.6 小结 94
- 9.7 练习 94
- 9.8 测验 95
- 第10章 内存和指针 98
- 10.1 内存 98
- 10.2 取地址运算符 99
- 10.3 间接运算符 99
- 10.4 强制指定变量地址 99
- 10.5 指针类型 100
- 10.6 指针运算 100
- 10.7 下标 100
- 10.8 函数参数 101
- 10.9 结构体 101
- 10.10 函数指针 102
- 10.11 指针的其他用途 102
- 10.12 错误行为 103
- 10.13 常见错误 103
- 10.14 ROM指针 104
- 10.15 用户定义内存 104
- 10.16 兼容性 105
- 10.17 通关之后 105
- 10.18 小结 105
- 10.19 练习 106
- 10.20 测验 106
- 第11章 内置函数 109
- 11.1 数学 109
- 11.2 内存 110
- 11.3 动态内存 110
- 11.4 一些更有趣的函数 111
- 11.5 可变参数列表 112
- 11.6 文本输入/输出 112
- 11.7 实现常量 115
- 11.8 兼容性 116
- 11.9 位和字节操作 116
- 11.10 非