第1章 PIC系列单片机的硬件结构及其指令系统
1.1 PIC系列单片机概述2
1.1.1 PIC10F系列单片机2
1.1.2 PIC12F系列单片机3
1.1.3 PIC16F系列单片机4
1.1.4 PIC18F系列单片机6
1.1.5 PIC24F,PIC24H系列单片机9
1.1.6 dsPIC30F,dsPIC33F系列数字信号控制器11
1.2 PIC系列单片机的硬件结构和引脚定义13
1.2.1 PIC10F系列单片机的硬件结构13
1.2.2 PIC10F系列单片机的引脚定义15
1.2.3 PIC12F系列单片机的硬件结构16
1.2.4 PIC12F系列单片机的引脚定义18
1.2.5 PIC16F系列单片机的硬件结构20
1.2.6 PIC16F系列单片机的引脚定义24
1.2.7 PIC18F系列单片机的硬件结构27
1.2.8 PIC18F系列单片机的引脚定义27
1.2.9 PIC24F,PIC24H系列单片机的硬件结构40
1.2.10 PIC24F,PIC24H系列单片机的引脚定义43
1.3 PIC系列单片机的指令系统52
1.3.1 基本级指令系统54
1.3.2 中级指令系统56
1.3.3 高级指令系统59
1.4 PIC系列单片机的汇编器MPASM62
1.4.1 MPASM的安装与运行62
1.4.2 MPASM的语法和运算符63
1.4.3 MPASM的伪指令64
1.4.4 MPASM的宏指令67
1.4.5 汇编语言程序模板69
第2章 C18编译器的语法
2.1 概述70
2.2 数据类型及数值范围71
2.2.1 整型71
2.2.2 浮点型72
2.3 存储类别和存储限定符73
2.3.1 存储类别73
2.3.2 存储限定符75
2.4 包含文件搜索路径和预定义宏名76
2.4.1 包含文件搜索路径76
2.4.2 预定义宏名77
2.5 C18与ISO的差异77
2.6 匿名结构和行内汇编85
2.6.1 匿名结构85
2.6.2 行内汇编86
2.7 pragma伪指令88
2.7.1 #pragma sectiontype伪指令88
2.7.2 #pragma interruptlow fname和#pragma interrupt
fname伪指令93
2.7.3 #pragma varlocate bank variablename和#pragma
varlocate “sectionname” variablename伪指令99
2.7.4 #pragma romdata config配置位定义伪指令101
2.8 处理器的标志头文件102
2.9 寄存器定义文件109
第3章 C18编译器的运行原理和优化
3.1 存储模型111
3.2 调用约定112
3.2.1 返回值113
3.2.2 管理软件堆栈114
3.2.3 C语言与汇编语言混合编程114
3.3 启动代码133
3.3.1 默认操作133
3.3.2 定制134
3.4 编译器管理的资源135
3.5 编译器优化135
3.5.1 合并相同的字符串优化 (-命令行选项: -Om+/-Om-)136
3.5.2 转移优化 (-命令行选项: -Ob+/-Ob-)136
3.5.3 存储区选择优化 (-命令行选项: -On+/-On-)137
3.5.4 W寄存器内容跟踪优化 (-命令行选项: -Ow+/-Ow-)137
3.5.5 代码排序优化(-命令行选项: -Os+/-Os-)138
3.5.6 尾部合并优化 (-命令行选项: -Ot+/-Ot-)139
3.5.7 删除执行不到的代码优化 (-命令行选项: -Ou+/-Ou-)140
3.5.8 复制传递优化(-命令行选项: -Op+/-Op-)141
3.5.9 冗余存储删除优化 (-命令行选项: -Or+/-Or-)142
3.5.10 删除死代码优化 (-命令行选项: -Od+/-Od-)142
3.5.11 过程抽象优化 (-命令行选项: -Opa+/-Opa-)143
第4章 PICC,PICC18编译器的语法
4.1 数据类型147
4.1.1 数的进制及常数148
4.1.2 位数据类型150
4.1.3 可位寻址寄存器151
4.1.4 整型数据153
4.1.5 浮点数 154
4.2 位指令155
4.3 绝对变量156
4.4 结构体和联合体157
4.4.1 结构体157
4.4.2 联合体158
4.5 字符串163
4.6 常数和可变类型变量163
4.7 局部变量和全局变量165
4.7.1 自动变量165
4.7.2 静态变量165
4.7.3 全局变量166
4.8 特殊类型限定词166
4.8.1 persistent类型限定词167
4.8.2 bank1,bank2,bank3类型限定词167
4.9 指针171
4.9.1 常数指针171
4.9.2 基本级系列单片机指针171
4.9.3 中级、高级系列单片机指针172
4.9.4 类型限定词和指针的结合173
4.10 函数174
4.10.1 函数参数传递174
4.10.2 函数返回值177
4.10.3 函数调用规则179
4.10.4 库函数179
4.11C 中断函数180
4.11.1 中级系列单片机C中断函数180
4.11.2 高级系列单片机C中断函数181
4.11.3 中断现场保护和恢复182
4.11.4 中断等级183
4.11.5 中断使能184
4.12 pragma伪指令184
4.12.1 #pragma jis,#pragma nojis和Printf_check伪指令185
4.12.2 #pragma psect伪指令185
4.12.3 #pragma regsused伪指令186
4.13 C语言和汇编语言混合编程186
4.13.1 外部汇编函数186
4.13.2 在汇编语言程序内访问C变量187
4.13.3 #asm,#endasm,asm(“”)指令189
4.14 特殊区域值192
4.14.1 定义工作配置字192
4.14.2 定义芯片标记单元193
4.15 程序链接194
第5章 PIC10F系列单片机的程序设计
5.1 程序存储器195
5.2 数据存储器196
5.2.1 通用寄存器文件196
5.2.2 特殊功能寄存器197
5.2.3 状态寄存器197
5.2.4 OPTION寄存器199
5.2.5 OSCCAL寄存器200
5.3 程序计数器和堆栈201
5.4 寻址方式202
5.5 I/O端口202
5.6 TIMER0定时器模块204
5.7 比较器模块205
5.8 CPU特性206
5.9 PIC10F系列单片机的程序模板和编程206
第6章 PIC12F系列单片机的程序设计
6.1 程序存储器208
6.2 数据存储器208
6.2.1 状态寄存器209
6.2.2 OPTION寄存器210
6.2.3 INTCON寄存器211
6.2.4 PIE1寄存器212
6.2.5 PIR1寄存器213
6.2.6 PCON寄存器214
6.2.7 OSCCAL寄存器214
6.3 PCL和PCLATH215
6.4 寻址方式215
6.5 I/O端口216
6.6 TIMER0定时器模块217
6.7 TIMER1定时器模块218
6.8 比较器模块220
6.9 模数转换器222
6.10 EEPROM数据存储器223
6.11 CPU特性225
6.12 中断226
6.13 PIC12F系列单片机的程序模板和编程228
第7章 PIC16F系列单片机中断系统编程
7.1 外部引脚沿跳变和电平变化中断编程230
7.1.1 外部引脚沿跳变中断230
7.1.2 外部引脚电平变化中断234
7.2 定时器计数溢出中断编程241
7.2.1 TMR0计数溢出中断编程242
7.2.2 TMR1计数溢出中断编程248
7.2.3 TMR2计数溢出中断编程253
7.3 CCP模块中断编程261
7.3.1 CCP模块捕捉中断264
7.3.2 CCP模块比较中断267
7.4 A/D转换中断编程271
7.5 异步串行通信接收发送中断编程278
7.5.1 接收中断281
7.5.2 发送中断285
7.6 EEPROM写入完成中断编程289
第8章 PIC16F系列单片机内核和外围模块编程
8.1 CPU特殊功能编程297
8.2 低电压检测编程300
8.3 输入/输出端口编程301
8.3.1 RA口301
8.3.2 RB,RC,RD和RE端口302
8.4 定时器编程307
8.4.1 TMR0307
8.4.2 TMR1310
8.4.3 TMR2313
8.5 CCP模块编程314
8.5.1 捕捉314
8.5.2 比较316
8.5.3 PWM317
8.6 主同步串行口和异步串行口通信编程324
8.6.1 主同步串行口324
8.6.2 异步串行口通信332
8.7 A/D转换编程336
第9章 PIC18F系列单片机中断系统编程
9.1 外部引脚沿跳变和电平变化中断编程341
9.1.1 外部引脚沿跳变中断341
9.1.2 外部引脚电平变化中断345
9.2 定时器计数溢出中断350
9.2.1 TMR0计数溢出中断350
9.2.2 TMR1计数溢出中断353
9.2.3 TMR2计数溢出中断357
9.2.4 TMR3计数溢出中断359
9.3 CCP模块中断编程362
9.3.1 CCP模块捕捉中断363
9.3.2 CCP模块比较中断365
9.3.3 增强型CCP模块捕捉/比较中断367
9.4 A/D转换中断编程368
9.5 异步串行通信接收发送中断编程375
9.5.1 接收中断379
9.5.2 发送中断379
9.6 EEPROM写入完成中断编程382
第10章 PIC18F系列单片机内核和外围模块编程
10.1 CPU特殊功能编程386
10.2 低电压检测编程387
10.3 输入输出端口编程389
10.3.1 RA端口389
10.3.2 RB端口、RC端口、RD端口390
10.3.3 其他端口394
10.4 定时器编程395
10.4.1 TMR0395
10.4.2 TMR1397
10.4.3 TMR2399
10.4.4 TMR3400
10.5 CCP模块编程402
10.5.1 捕捉402
10.5.2 比较403
10.5.3 PWM405
10.5.4 增强型CCP模块406
10.6 主同步串行口和异步串行口通信编程409
10.6.1 主同步串行口409
10.6.2 异步串行口通信418
10.7 A/D转换编程420
10.8 液晶显示器编程421
第11章 氮控仪的硬件组成和电路原理
11.1 渗氮工艺过程概述423
11.1.1 渗氮工艺过程424
11.1.2 系统功能424
11.1.3 系统结构框图425
11.2 氮控仪425
11.2.1 氮控仪的功能和技术数据425
11.2.2 氮控仪结构特点426
11.2.3 硬件电路组成及工作原理427
11.2.4 主要元器件选择和样机制作433
11.2.5 氮控仪原理图437
第12章 氮控仪的软件设计
12.1 主程序的功能和流程图440
12.1.1 主程序框图440
12.1. 主程序440
12.2 主要功能函数441
12.2.1 键盘扫描函数442
12.2.2 液晶显示函数443
12.2.3 24C01读写函数445
12.2.4 A/D转换和标度转换函数446
12.2.5 通信函数448
12.2.6 其他实用程序449
12.3 完整的按键扫描、显示和EEPROM读写程序449附录APIC系列单片机开发工具
附录B 实验板电路图
附录C 配套光盘内容简介
参考文献