第1章 微型计算机系统 1
1.1 引言 1
1.2 微控制器系统 1
1.2.1 RAM 3
1.2.2 ROM 3
1.2.3 PROM 4
1.2.4 EPROM 4
1.2.5 EEPROM 4
1.2.6 Flash EEPROM 4
1.3 微控制器的特点 4
1.3.1 工作电压 4
1.3.2 时钟 5
1.3.3 定时器 5
1.3.4 看门狗 5
1.3.5 复位输入 5
1.3.6 中断 5
1.3.7 掉电检测器 6
1.3.8 模数转换器 6
1.3.9 串行输入/输出 6
1.3.10 EEPROM数据存储器 6
1.3.11 LCD驱动器 6
1.3.12 模拟比较器 7
1.3.13 实时时钟 7
1.3.14 睡眠模式 7
1.3.15 上电复位 7
1.3.16 低功耗运行 7
1.3.17 电流拉出/灌入能力 7
1.3.18 USB接口 7
1.3.19 电机控制接口 7
1.3.20 CAN接口 7
1.3.21 以太网接口 8
1.3.22 ZigBee接口 8
1.4 微控制结构 8
1.5 数制 8
1.5.1 十进制数系统 9
1.5.2 二进制数系统 9
1.5.3 八进制数系统 9
1.5.4 十六进制数系统 9
1.6 二进制数转换为十进制数 10
1.7 十进制数转换为二进制数 10
1.8 二进制数转换为十六进制数 11
1.9 十六进制数转换为二进制数 12
1.10 十六进制数转换为十进制数 12
1.11 十进制数转换为十六进制数 13
1.12 八进制数转换为十进制数 13
1.13 十进制数转换为八进制数 14
1.14 八进制数转换为二进制数 14
1.15 二进制数转换为八进制数 15
1.16 负数 15
1.17 二进制数的加法 16
1.18 二进制数的减法 16
1.19 二进制数的乘法 17
1.20 二进制数的除法 17
1.21 浮点数 18
1.22 浮点数转换为十进制数 19
1.22.1 规范化浮点数 19
1.22.2 十进制数转换为浮点数 19
1.22.3 浮点数的乘除法 20
1.22.4 浮点数的加减法 21
1.23 BCD数 21
1.24 小结 22
1.25 练习题 22
第2章 PIC18F系列微控制器 24
2.1 PIC18FXX2的结构 26
2.1.1 程序存储器结构 28
2.1.2 数据存储器结构 29
2.1.3 配置寄存器 30
2.1.4 电源 34
2.1.5 复位 34
2.1.6 时钟源 35
2.1.7 看门狗定时器 39
2.1.8 并行I/O接口 39
2.1.9 定时器 43
2.1.10 捕捉/比较/PWM模块(CCP) 50
2.1.11 模数转换器(A/D)模块 54
2.1.12 中断 60
2.2 小结 69
2.3 练习题 69
第3章 C编程语言 70
3.1 mikroC程序的结构 70
3.1.1 注释 70
3.1.2 一个程序的开始和结束 71
3.1.3 程序语句的结尾 71
3.1.4 空白 71
3.1.5 区分大小写 72
3.1.6 变量名 72
3.1.7 变量类型 72
3.1.8 常量 74
3.1.9 转义序列 75
3.1.10 静态变量 76
3.1.11 外部变量 76
3.1.12 动态变量 76
3.1.13 枚举变量 76
3.1.14 数组 77
3.1.15 指针 78
3.1.16 结构体 79
3.1.17 联合体 81
3.1.18 C语言的运算符 82
3.1.19 修改控制流 87
3.1.20 结合mikroC和汇编语言 93
3.2 PIC微控制器输入输出端口编程 94
3.3 程序例题 95
3.4 小结 97
3.5 练习题 97
第4章 mikroC的函数和库 99
4.1 mikroC函数 99
4.1.1 函数原型 102
4.1.2 向函数传递数组 104
4.1.3 通过引用向函数传递变量 106
4.1.4 参数数量可变 107
4.1.5 函数的可重入性 108
4.1.6 静态函数变量 108
4.2 mikroC的内置函数 109
4.3 mikroC的函数库 112
4.3.1 EEPROM库 112
4.3.2 LCD库 113
4.3.3 软件UART库 117
4.3.4 硬件USART库 120
4.3.5 音频库 122
4.3.6 ANSI C库 123
4.3.7 混合库 126
4.4 小结 130
4.5 练习题 130
第5章 PIC18开发工具 132
5.1 软件开发工具 132
5.1.1 文本编辑器 132
5.1.2 汇编器和编译器 133
5.1.3 仿真器 133
5.1.4 高级编程语言仿真器 133
5.1.5 集成开发环境(IDE) 134
5.2 硬件开发工具 134
5.2.1 开发板 134
5.2.2 设备编程器 143
5.2.3 内电路调试器 145
5.2.4 内电路模拟器 146
5.2.5 面包板 148
5.3 mikroC集成开发环境(IDE) 149
5.3.1 mikroC IDE界面 149
5.3.2 创建和编译新文件 152
5.3.3 仿真器的使用 157
5.3.4 mikroICD内电路调试器的使用 162
5.3.5 开发板的使用 164
5.4 小结 170
5.5 练习题 170
第6章 简单PIC18项目 172
6.1 程序描述语言 172
6.1.1 START-END 172
6.1.2 顺序 172
6.1.3 IF-THEN-ELSE-ENDIF 173
6.1.4 DO-ENDDO 173
6.1.5 REPEAT-UNTIL 173
项目6.1 跟踪LED 174
项目6.2 LED骰子 177
项目6.3 双骰子项目 181
项目6.4 使用更少的I/O引脚实现的两个骰子的项目 183
项目6.5 7段LED计数器 188
项目6.6 两个数位的多路复用7段LED 193
项目6.7 带定时器中断的两数位多路复用7段LED计数器 197
项目6.8 带LCD显示器的伏特表 202
项目6.9 带键盘和LCD的计算器 208
项目6.10 基于串行通信的计算器 216
第7章 高级PIC18项目——SD卡项目 227
7.1 SD卡 227
7.1.1 SPI总线 229
7.1.2 在SPI模式下SD卡的操作 230
7.2 mikroC语言的SD卡库函数 235
项目7.1 读CID寄存器并在PC屏幕上显示 236
项目7.2 SD卡扇区的读/写 240
项目7.3 使用卡文件系统 241
项目7.4 温度记录仪 244
第8章 高级PIC18项目——USB总线项目 252
8.1 总线速度识别 254
8.2 USB状态 254
8.3 USB总线通信 255
8.3.1 数据包 255
8.3.2 数据流类型 256
8.3.3 枚举 257
8.4 描述符 257
8.4.1 设备描述符 258
8.4.2 配置描述符 259
8.4.3 接口描述符 260
8.4.4 HID描述符 261
8.4.5 终端描述符 262
8.5 PIC18微控制器的USB总线接口 263
8.6 mikroC语言的USB总线库函数 263
项目8.1 基于USB的微控制器输出端口 265
项目8.2 基于USB的微控制器的输入输出 283
项目8.3 基于USB的周围气压PC显示 288
第9章 高级PIC18项目——CAN总线项目 296
9.1 数据帧 300
9.1.1 帧起始(SOF) 300
9.1.2 仲裁字段 300
9.1.3 控制字段 301
9.1.4 数据字段 301
9.1.5 CRC字段 302
9.1.6 ACK字段 302
9.2 遥控帧 302
9.3 错误帧 302
9.4 过载帧 302
9.5 位填充 302
9.6 错误类型 303
9.7 标称位时序 303
9.8 PIC微控制器CAN接口 304
9.9 PIC18F258微控制器 305
9.9.1 配置模式 307
9.9.2 禁止模式 307
9.9.3 正常工作模式 307
9.9.4 监听模式 307
9.9.5 回环模式 307
9.9.6 错误识别模式 307
9.9.7 CAN报文发送 307
9.9.8 CAN报文接收 308
9.9.9 计算时序参数 309
9.10 mikroC CAN函数 310
9.10.1 CANSetOperationMode 311
9.10.2 CANGetOperationMode 311
9.10.3 CANIntialize 311
9.10.4 CANSetBaudRate 312
9.10.5 CANSetMask 312
9.10.6 CANSetFilter 312
9.10.7 CANRead 312
9.10.8 CANWrite 313
9.11 CAN总线编程 313
项目9.1 温度传感器CAN总线项目 314
第10章 多任务和实时操作系统 321
10.1 状态机 321
10.2 实时操作系统(RTOS) 323
10.3 RTOS服务 325
10.4 同步和消息工具 325
10.5 CCS PIC C编译器RTOS 325
10.5.1 准备使用RTOS 326
10.5.2 声明任务 326
项目10.1 LED(发光二极管) 327
项目10.2 随机数发生器 329
项目10.3 使用RS232串行输出的电压表 332
索引 338