第1章 微控制器 1
1.1 微控制器芯片 1
1.1.1 应用系统基本要素 4
1.1.2 外围功能 7
1.1.3 处理器体系结构 10
1.1.4 软件开发工具 24
1.2 可编程库逻辑器件 24
1.3 决定在应用开发中使用哪种器件 27
第2章 Microchip PICmicro微控制器 28
2.1 器件及特性概述 29
2.1.1 低档体系结构 30
2.1.2 中档体系结构应用 31
2.1.3 PIC17Cxx器件 31
2.1.4 PIC18Cxx器件 31
2.1.5 只读存储器/可擦写可编程只读存储器/闪存 32
2.1.7 器件封装 34
2.1.6 外围器件 34
2.1.8 器件号协定和规范 39
2.2 MPLAB 41
2.3 模糊技术工具 42
2.4 KEELOQ技术 43
2.5 Parallax Basic Stamp 44
2.6 PICmicro微控制器兼容器件 45
第3章PICmicro微控制器处理器体系结构 46
3.1 中央处理器 47
3.2 PICmicro微控制器的算术逻辑单元 50
3.2.1 状态寄存器 52
3.3 数据传送 54
3.3.1 寄存器堆寻址 58
3.4 程序计数器和堆栈 60
3.5 复位 64
3.6 中断 66
3.7 不同型号的体系结构差别 68
3.7.1 低档PICmicro微控制器器件 69
3.7.2 PIC17Cxx型体系结构 72
3.7.3 PIC18Cxx型体系结构 79
第4章PICmicro微控制器指令集 88
4.1 中档器件指令集 89
4.1.1 数据传送指令 89
4.1.2 数据处理指令 97
4.1.3 执行改变运算符 106
4.1.4 处理器控制指令 114
4.2 其他的PICmicro微控制器指令集 118
4.2.1 低档PICmicro微控制器指令集 118
4.2.2 PIC17Cxx型器件指令集 119
4.2.3 PIC18Cxx型器件指令集 134
第5章PICmicro微控制器硬件特性 149
5.1 上电与去耦 150
5.1.1 高电压器件 153
5.2 复位 155
5.3 监视计时器 155
5.4 系统时钟/振荡器 157
5.4.1 内置振荡器 160
5.4.2 18Cxx型器件的振荡器和指令时钟 161
5.5 配置寄存器 162
5.6 休眠 163
5.7 硬件和文件寄存器 164
5.7.1 0寄存器 166
5.8 并行输入/输出 166
5.8.1 12C5xx和16C505的I/O管脚访问 171
5.9 中断 173
5.9.1 TMRO 175
5.9.2 计算延迟值 177
5.10 预标度计数器 178
5.11 选项寄存器 179
5.12 中档器件内置EEPROM/Flash存储器的访问 181
5.12.1 低档器件的内置数据EEPROM 184
5.13 TMRI和TMR2 186
5.13.1 比较/捕获/PWN(CCP)模块 189
5.14.1 同步串行端口(SSP)通信模块 194
5.14 串行I/O 194
5.14.2 USART异步串行通信 203
5.15 模拟I/O 208
5.15.1 PIC16C62x型器件:电位比较 208
5.15.2 PIC16C7x:模拟输入 211
5.16 并行从动端口(PSP) 214
5.17 17Cxx型器件的外部存储器的连接 215
5.19 未来器件展望 220
5.18 电路上串行编程(ICSP) 220
第6章PICmicro微控制器应用设计和硬件连接 222
6.1 估计应用功耗需求 222
6.2 复位 223
6.3 连接到外部器件 225
6.3.1 数字逻辑器件 225
6.3.2 不同的逻辑电平和ECL与电平移动 230
6.4 发光二极管 231
6.5 开关跳动 233
6.6 矩阵键区 235
6.7 液晶显示器 239
6.8 模拟I/O 247
6.8.1 电位计 247
6.8.2 脉宽调制I/O 249
6.8.3 音频输出 253
6.9 继电器和螺线管 255
6.10 直流电机和步进电机 256
6.11 R/C伺服控制 259
6.12.1 同步 260
6.12 串行端口 260
6.12.2 异步(NRZ)串行 266
6.12.3 Dallas半导体厂的1线接口 280
第7章 PC接口技术 283
7.1 PC接口软件 283
7.2 串行端口 288
7.2.1 超级终端 298
7.2.2 VISUAL BASIC MSCOMM串行控制 302
7.3 并行端口 308
7.4 键盘和鼠标端口 312
7.5 ISA总线 320
第8章PICmicro微控制器应用程序的软件开发工具 326
8.1 软件开发工具 328
8.1.1 编辑器 329
8.1.2 汇编程序 331
8.1.3 编译器 334
8.1.4 连接器 339
8.1.5 模拟器 340
8.1.6 仿真器 341
8.1.7 集成开发环境 342
8.2 高级语言 344
8.2.1 全局变量和局部变量 346
8.2.2 BASIC和PICBASIC语言 348
8.2.3 应用于PICmicro微控制器的C语言 350
8.2.4 PICLite语言 356
8.3 MPSIM.INI 361
8.4 激励(.STI)文件 363
8.5 模糊技术 364
8.6 版本支持工具 370
8.7 MPLAB 370
8.7.1 创建方案以及方案文件(.PJT) 371
8.7.2 为模拟软件提供输入数据 375
8.7.3 MPASM源文件(.ASM) 380
8.7.4 标准定义以及INCLUDE文件(.INC) 392
8.7.5 输出文件 395
8.7.6 连接以及连接后的应用程序 401
8.7.7 观察窗口文件 407
第9章PICmicro微控制器汇编软件开发技术 410
9.1 生成代码并对代码做出支持 410
9.1.1 范例模板 412
9.2 PICmicro微控制器的编程技巧 414
9.2.1 标号、地址和标识 414
9.2.2 配置保险的ID位置 419
9.2.3 具有参数传递的子程序 421
9.2.4 程序结构的优化 424
9.3.1 标准信息存储过程 457
9.3 中断 457
9.3.2 无信息存储的中断处理器 459
9.3.3 递归子程序 460
9.3.4 模拟逻辑 461
9.4 事件驱动编程 463
9.5 状态机编程 466
9.6 在PICmicro微控制器器件结构之间实现程序的接口 467
9.6.1 将中档应用软件与低档PICmicro微控制器接口 467
9.6.2 向PIC17Cxx和PIC18Cxx的接口 471
9.7 优化PICmicro微控制器的应用软件 474
9.8 有助于避免应用软件使用问题的一些原则 478
第10章 宏开发 481
10.1 定义与宏之间的区别 483
10.2 汇编程序计数器 485
10.3 条件汇编 489
10.3.1 用于应用程序调试的定义 495
10.4 宏的调试 496
10.5 结构化的宏编程 499
第11章 设计个人的PICmicro微控制器应用程序 504
11.1 需求说明 505
11.1.1 开发合格性认证设计 507
11.2 PICmicro微控制器的资源分配 509
11.3 有效的用户界面 511
11.4 项目管理 513
第12章 程序的调试 516
12.1 表征化问题 517
12.2 假设以及对假设的测试 518
12.3 仿真应用 519
12.3.1 设计仿真文件 522
第13章PICmicro微控制器的程序设计 524
13.1 十六进制文件格式 524
13.2 代码保护的特征 528
13.3 低档器件的程序设计 530
13.4 中档器件和ICSP串行程序设计 532
13.4.1 PIC12C50x和PIC16C505的串行编程 536
13.4.2 FLASH程序设计 537
13.4.3 PIC17Cxx的ICSP程序设计 539
13.5 PIC17Cxx编程 541
13.6 PIC18Cxx编程 543
13.7 PICstart Plus和PRO MATE Ⅱ编程器 545
13.8 El Cheapo编程器 548
13.9 YAP-Ⅱ编程器 557
13.10 第三方编制器 570
第14章 仿真器 574
14.1 MPLAB ICE-2000 576
14.2 PICMaster 579
14.3 MPLAB-ICD 580
14.4 EMU-Ⅱ 583
14.5 其他仿真器 603
第15章 试验 604
15.1 工具和部件 605
15.2 PICmicro微控制器的处理器的执行 609
15.2.1 FIRSTAP:直接寄存器寻址和创建第1个MPLAB方案 612
15.2.2 REGADDR:寄存器的Bank寻址 626
15.2.3 STATUS:状态寄存器 628
15.2.4 ARITH:算术运算 633
15.3 跳转 638
15.3.1 MIDGOTO:程序内存页之间的中档跳转 638
15.3.2 LOWGOTO:程序内存页之间的低档跳转 640
15.3.3 CONDJUMP:条件跳转 644
15.4 数据 649
15.4.1 VARMANI:变量处理 649
15.4.2 VARARRAY:变量数组的仿真 652
15.4.3 STACKOPS:算术运算堆栈的仿真 656
15.5 子程序 659
15.5.1 FIRSTCAL:通过寄存器传递数据 661
15.5.2 STAKCALL:传递堆栈上的数据 664
15.5.3 CALLBUP:程序计数器的堆栈放大 666
15.6 表数据 668
15.6.1 TABLEO:中档的表调用 668
15.6.2 ARBTABLE:比256表目更长的中档表 672
15.6.3 SMALLTBL:低档的表调用和放置 675
15.6.4 STATEMIC:控制状态机的运行 678
15.7 硬件操作 682
15.7.1 LEDON:打开一个发光二极管(LED) 684
15.7.2 计算现时需求/检查试验 691
15.7.3 DEBOUNCE:抖动按钮 693
15.7.4 PINCHG:无意改变输出位 699
15.7.5 TIMEEND:无法结束的TMRO延迟 703
15.7.6 DECOUPLE:电源/去耦问题 707
15.7.7 WDT:监视计时器 712
15.7.8 POWERUP:寄存器上电值 717
15.7.9 RESET:复位 723
15.7.10 TMRO:用预标度器设置TMRO 728
15.7.11 RANDOM:随机数生成器 732
15.7.12 SLEEP:休眠 737
15.7.13 DIFFOSC:不同的振荡器 742
15.7.14 EEPROM:访问EEPROM数据存储器 747
15.7.15 SHORT:可能最简单的PICmicro微控制器实例 754
15.8.1 ADCLESS:不用ADC测量电阻值 760
15.8 模拟输入/输出 760
15.8.2 ADC:内置ADC的使用 765
15.8.3 VLADDER:电阻器的梯形输出 770
15.8.4 PWMOUT:PWM电压输出 776
15.9 I/O中断 781
15.9.1 CYLON:带有上下文存储的计时器/中断处理器 782
15.9.2 TMROINT:对带有计时器管脚输入的输入管脚中断的仿真 787
15.9.3 LEDPWN:用来减弱LED PWM的TIMERO中断 791
15.9.4 INTDEB:用中断反弹输入 798
15.10.1 TRUERS:使用内建USART的异步串行I/O 804
15.10 串行I/O 804
15.10.2 BASICRS:带有管脚激励文件的异步串行I/O硬件的仿真 808
15.10.3 SIMPRS:位脉冲异步串行I/O测试 817
15.10.4 3RS:使用3线RS-232接口检测PICmicro微控制器 822
15.11 调试 832
15.11.1 调试:应用程序存在的一些细节问题 832
第16章 设计 839
16.1.1 TRAINCTL:使用霍耳效应传感器的模型列车红绿灯控制 840
16.1 低档器件 840
16.1.2 SLI:串行LCD接口 845
16.1.3 ULTRA:超声LCD测距 852
16.1.4 KEY:开关矩阵按键接口 857
16.2 中档器件 862
16.2.1 时钟:模拟时钟 863
16.2.2 XMAS:用闪烁灯和音乐作圣诞节装饰 867
16.2.3 FANCTAL:简单的风扇速度控制器 874
16.2.4 IRTANK:TV I/R遥控机器人 879
16.2.5 IRBETTER:I/R机器人附录 885
16.2.6 THERMO:具有7段LED(发光二极管)显示器的电子温度计 890
16.2.7 MARYATOY:MARYA的玩具,它是电子温度计的附件 896
16.2.8 MARYABAS:“MARYA的玩具”的PicBasic“端口” 899
16.2.9 EMAIL:将PICmicro微控制器连接到INTERNET 907
16.2.10 PCTHERM:RS-485主(PC中是PSP)/从远程(PIC 16HV540)温度计接口 914
16.2.11 SERVO:R/C伺服机构编程器/控制器 922
16.2.12 ADDENDUM:SimmStick伺服机构控制器 926
16.2.13 MIC-Ⅱ:单片控制器 927
16.2.14 VIDEO:NTSC视频输出 936
16.3 PIC17Cxx器件 943
16.3.1 PIC17DEV:PIC17Cxx存储器接口演示电路和监视器编程 943
16.4 PIC18Cxx器件 953
16.4.1 FUZZY:模糊逻辑风扇调速器 954
第17章 实时操作系统 964
17.1 RTOS01:简单的PIC18CxxRTOS 967
17.2 RTOS02:多任务应用程序举例 974
第18章 结束语 983
附录A 术语表 984
附录B 有用的表和数据 998
附录C PICmicro微控制器应用程序调试检验表 1007
附录D 资源 1012
附录E PICmicro微控制器产品和服务提供商 1029
附录F SimmStick 1051
附录G UMPS 1057
附录H grasm/gpsim Linux PICmicro微控制器应用工具 1061
附录I CD-ROM 1065