第1章 PIC16F877A硬件系统 1
1.1 PIC16F877A硬件配置概览 1
1.2 PIC16F877A引脚布置图 3
1.3 PIC16F877A内部结构图 5
1.4 PIC16F877A程序存储器结构图 9
1.5 PIC16F877A数据存储器结构图 10
1.6 两种不同的存储器组织结构的比较 14
1.7 PIC16F193X硬件配置概览 16
1.8 PIC16F193X引脚布置图 18
1.9 PIC16F193X内部结构图 19
第2章 指令系统 27
2.1 关于指令系统 27
2.2 RISC与CISC指令系统的比较 28
2.3 指令的格式 28
2.4 RISC指令的时序 30
2.5 指令系统概览 32
2.6 指令系统说明 33
2.7 寻址方式 45
2.8 PIC16F193X的指令系统 48
2.9 C语言中与位操作有关的函数 56
第3章 汇编语言编程 59
3.1 关于汇编语言 59
3.2 汇编器 60
3.3 汇编语言的语句格式 60
3.4 操作数格式描述 61
3.5 汇编伪指令 62
3.6 汇编语言的程序格式 65
3.7 顺序程序结构 66
3.8 循环程序结构 67
3.9 分支程序结构 68
3.10 子程序结构 69
3.11 延时程序设计 70
3.12 查表程序设计 72
3.13 RAM数据存储器的体选寻址 74
3.14 FLASH程序存储器的分区及跨页跳转 78
3.15 PIC16F193X的FLASH程序存储器及跳转指令 82
3.16 C语言中与内存操作有关的函数 84
第4章 中断系统 86
4.1 由查询方式到中断方式 86
4.2 中断的响应过程 87
4.3 中断的基本硬件结构 89
4.4 PIC16F877A的中断源 90
4.5 与PIC16F877A中断相关的寄存器 91
4.6 PIC16F877A的中断逻辑 95
4.7 中断的响应延时 96
4.8 中断的现场保护 98
4.9 RB0/INT外部中断 101
4.10 与INT中断相关的寄存器 101
4.11 INT外部中断块应用实践 102
4.12 RB端口电平变化中断 104
4.13 与RB端口电平变化中断相关的寄存器 104
4.14 RB端口电平变化中断应用实践 105
4.15 PIC16F193X的中断逻辑 109
4.16 PIC16F193X的中断自动现场保护 109
4.17 PIC16F193X的RB端口电平变化中断 110
4.18 中断的C语言编程 113
第5章 I/O端口 117
5.1 典型的I/O端口 117
5.2 典型的I/O端口工作原理 119
5.3 推挽电路的实验 120
5.4 D触发器的实验 121
5.5 关于端口的读取—修改—写入 122
5.6 I/O端口的保护 124
5.7 RA端口 125
5.8 RB端口 129
5.9 RC端口 135
5.10 RD端口 141
5.11 RE端口 143
5.12 PIC16F193X系列机型的I/O端口 145
5.13 I/O端口的C语言编程 147
第6章 TIMER0(WDT)模块 151
6.1 TIMER0模块定时器/计数器的功能特点 151
6.2 与TIMER0模块相关的寄存器 151
6.3 TIMER0(WDT)模块的电路结构 153
6.4 TIMER0模块两种工作模式的说明 155
6.5 TIMER0模块应用实践 159
6.6 软件与硬件定时的比较与分析 166
6.7 看门狗定时器WDT 168
6.8 与WDT工作相关的寄存器 169
6.9 WDT的工作原理 170
6.10 PIC16F193X系列的TIMER0和WDT模块(EWDT) 173
6.11 TIMER0模块的C语言编程 175
6.12 WDT模块的C语言编程 178
第7章 TIMER1模块 180
7.1 TIMER1模块定时器/计数器的功能特点 180
7.2 与TIMER1模块相关的寄存器 180
7.3 TIMER1模块的电路结构和相关原理 182
7.4 TIMER1模块自带振荡器的电路结构和工作原理 183
7.5 TIMER1模块两种工作模式的说明 186
7.6 TIMER1模块应用实践 192
7.7 PIC16F193X的Timer1模块(ETimer1) 202
7.8 TIMER1模块的C语言编程 208
第8章 TIMER2模块 213
8.1 TIMER2模块定时器的功能特点 213
8.2 与TIMER2模块相关的寄存器 213
8.3 TIMER2模块的电路结构 215
8.4 TIMER2模块的工作原理 216
8.5 TIMER2模块应用实践 219
8.6 三类TIMER的比较 224
8.7 TIMER2模块的C语言编程 224
8.8 虚拟定时器(#use timer) 227
第9章 CCP模块 230
9.1 CCP模块的功能特点 230
9.2 与Capture、Compare、Timer1工作相关的寄存器 231
9.3 Capture模式的电路结构和工作原理 232
9.4 Capture模式的应用实践 235
9.5 Compare模式的电路结构和工作原理 239
9.6 Compare模式的应用实践 241
9.7 两种定时(计数)方式的比较 244
9.8 与PWM、Timer2工作相关的寄存器 245
9.9 PWM模式的电路结构和工作原理 246
9.10 两个CCP模块之间的相互关系 252
9.11 PWM工作方式应用实践 254
9.12 PIC16F193X系列的ECCP模块 260
9.13 CCP模块的C语言编程 265
第10章 模/数转换模块ADC 277
10.1 单片机环境下的数据采集 277
10.2 ADC模块的概述 277
10.3 与ADC模块相关的寄存器 278
10.4 ADC模块的电路结构 281
10.5 ADC模块的静态特性 283
10.6 ADC模块的动态特性 286
10.7 ADC模块模拟输入引脚的设置 290
10.8 特殊情况下的A/D转换 291
10.9 综合权衡转换速度与转换精度 292
10.10 基准电压、电源电压和模拟输入电压的比较 292
10.11 工作流程和传递函数 294
10.12 ADC模块应用实践 295
10.13 PIC16F193X系列的ADC模块 300
10.14 ADC模块的C语言编程 302
第11章 电压基准与比较器模块 306
11.1 基准电压模块的功能特点 306
11.2 与基准电压模块相关的寄存器 306
11.3 电压基准源模块的电路结构 307
11.4 基准电压的配置 309
11.5 基准电压连接注意事项 309
11.6 基准电压使用注意事项 310
11.7 比较器模块的功能特点 310
11.8 与比较器模块相关的寄存器 311
11.9 比较器不同工作方式下的引脚配置 312
11.10 比较器的工作原理及使用注意事项 313
11.11 比较器模块应用实践 319
11.12 PIC16F193X系列的固定基准电压(FVR) 323
11.13 PIC16F193X系列的DAC模块 324
11.14 PIC16F193X系列的比较器模块(带SR锁存) 327
11.15 电压基准源及比较器模块的C语言编程 330
第12章 SPI通信 334
12.1 SPI通信接口概述 334
12.2 SPI通信接口功能特点 335
12.3 SPI系统拓扑 336
12.4 SPI接口通信方式 336
12.5 SPI通信方式举例 338
12.6 与SPI通信相关的寄存器 339
12.7 SPI工作方式下的硬件电路结构与工作原理 342
12.8 SPI接口的初始化设置 343
12.9 SPI接口在主控方式下的工作 345
12.10 SPI接口在从动方式下的工作 347
12.11 SPI通信应用实践 349
12.12 SPI模块的C语言编程 361
第13章 I2C通信 373
13.1 I2C通信接口概述 373
13.2 I2C通信接口功能特点 374
13.3 I2C系统拓扑 375
13.4 I2C接口的电路结构 376
13.5 I2C总线的基本工作原理 377
13.6 I2C通信的波特率发生器 379
13.7 I2C总线信号的时序分析 380
13.8 I2C通信的信号传输格式 385
13.9 I2C通信寻址方式 386
13.10 与I2C通信相关的寄存器 387
13.11 I2C接口在主控方式下的工作 391
13.12 I2C接口在被控方式下的工作 396
13.13 I2C通信的C语言编程 416
第14章 USART异步通信 427
14.1 USART通信接口概述 427
14.2 USART通信模块的组成 428
14.3 USART通信接口功能特点 428
14.4 与USART异步通信相关的寄存器 429
14.5 USART波特率发生器BRG 432
14.6 USART模块的异步工作方式 433
14.7 USART异步发送器 434
14.8 USART异步接收器 436
14.9 USART异步通信应用分析 438
14.10 带地址检测功能的9位USART异步接收器 448
14.11 AUSART异步通信应用分析 450
14.12 USART模块的C语言编程 455
第15章 USART同步通信 467
15.1 USART同步工作方式 467
15.2 USART同步通信拓扑 467
15.3 与USART同步通信相关的寄存器 468
15.4 USART波特率发生器BRG 470
15.5 USART同步工作方式下的硬件电路结构与工作原理 471
15.6 USART同步通信应用分析 476
15.7 USART模块的C语言编程(同步方式) 481
第16章 PSP通信 484
16.1 串行通信与并行通信的比较 484
16.2 PSP通信介绍 485
16.3 与PSP通信相关的寄存器 485
16.4 PSP通信的硬件电路结构与工作原理 487
16.5 PSP通信应用实践 490
16.6 PSP通信的C语言编程 494
第17章 EEPROM 498
17.1 关于EEPROM 498
17.2 片内EEPROM存储器结构 499
17.3 与EEPROM相关的寄存器 500
17.4 片内EEPROM的结构与操作原理 503
17.5 片内EEPROM(HEF)与独立式EEPROM的比较 506
17.6 防止片内EEPROM数据丢失的安全措施 508
17.7 EEPROM应用实践 509
17.8 EEPROM模块的C语言编程 519
第18章 振荡器电路 522
18.1 振荡器电路概述 522
18.2 RC振荡器电路 523
18.3 外接石英晶体振荡器电路(LP/XT/HS) 524
18.4 外接陶瓷谐振器电路(LP/XT/HS) 527
18.5 外部振荡器电路(LP/XT/HS) 528
18.6 石英晶体振荡器的起振过程 530
18.7 Sleep工作方式 531
18.8 Sleep工作方式下的唤醒 532
18.9 与睡眠(Sleep)及唤醒(Wakeup)相关的寄存器 535
18.10 PIC16F193X系列的振荡器电路 536
18.11 片内振荡器电路的C语言编程 545
第19章 复位系统 548
19.1 复位及复位系统概述 548
19.2 片内复位系统电路结构 549
19.3 简易的电源上电复位方式 552
19.4 特殊情况下的电源上电复位 554
19.5 通常情况下的电源上电复位 556
19.6 正常工作状态下的手动复位 557
19.7 Sleep状态下的手动复位 559
19.8 看门狗WDT复位 560
19.9 电源欠压复位(BOR及LPBOR) 560
19.10 PIC16F193X的复位系统 564
19.11 与C有关的预处理器#include与#fuses 565
19.12 C语言控制类函数 567
第20章 C语言编程 569
20.1 C语言简史 569
20.2 为什么要使用C语言 569
20.3 使用CCS公司的C语言编译器 571
20.4 CCS C编译器的数据类型 573
20.5 CCS C编译器的预处理器 575
20.6 CCS C编译器的内置函数 578
20.7 观察C程序的编译结果 580
第21章 新型8位MCU及特色 586
21.1 新型8位MCU系列及特点 586
21.2 独立于内核的外设CIP 591
21.3 片内智能模拟器件 599
21.4 CIP功能演示及分析 603
21.5 出色的节能技术 606
21.6 代码配置器MCC 609
附录 612
参考文献 621