目录 1
前言 1
关于本书 1
致谢 1
第1章 引言 1
1.1 信息处理的革命 1
1.2 发展策略 2
1.3 FLASH存储技术 4
1.4 微控制器特点 5
第2章 CPU结构 9
2.1 概述 9
2.2 哈佛结构 9
2.3 直接寻址 10
2.4 间接寻址 12
2.5 程序存储器读操作 16
2.6 程序指令顺序 18
2.7 CPU及其状态位 20
2.8 特殊功能寄存器(SFR) 22
习题 23
第3章 指令集 26
3.1 概述 26
3.2 F/W的区别 29
3.3 “分组”操作 29
3.4 传送指令 30
3.5 单操作数指令 32
3.6 “与”、“或”、“异或”指令 35
3.7 算术运算指令 36
3.8 有条件和无条件分支转移 38
3.9 条件跳转指令 39
3.11 保留指令 40
3.10 子程序调用和返回指令 40
习题 41
第4章 QWIKFLASH目标板 43
4.1 概述 43
4.2 QWIKFLASH I/O电路 44
4.3 QWIKFLASH工具 47
4.4 调试支持 48
第5章 程序开发(P1例程) 50
5.1 概述 50
5.2 TIMER0操作 50
5.3 程序结构 54
5.4 LOOPTIME子程序 55
5.5 BLINKALIVE子程序 56
5.6 宏 57
5.7 P1.ASM程序 58
5.8 免费工具 62
5.9 汇编 64
5.10 执行 68
习题 69
第6章 结构化汇编预处理器 71
6.1 概述 71
6.2 条件编译和执行 71
6.3 结构化汇编构架 72
6.4 条件测试 74
6.5 SASM输入参数 76
6.6 SASM安装、执行及程序代码调试 77
6.7 P1.ASM修订 78
习题 83
7.1 概述 85
7.2 LCD接口选择 85
第7章 字符数字液晶显示(P2例程) 85
7.3 初始化 87
7.4 光标定位代码 91
7.5 显示字符串 91
7.6 LCD字符集 94
7.7 用户定义的字符 96
7.8 显示调试辅助程序 101
7.9 P2.ASM——显示例程 102
习题 108
第8章 旋转脉冲发生器 112
8.1 概述 112
8.2 RPG分辨率 112
8.3 RPG功能 114
8.4 RPG子程序 114
8.5 速率检测RPG 116
习题 118
第9章 中断和中断时序 121
9.1 概述 121
9.2 低优先级中断时序 122
9.3 低优先级中断结构 126
9.4 高优先级中断结构 131
9.5 重要代码区 133
9.6 外部中断 135
9.7 PORTB中断(引脚RB7:RB4) 136
习题 137
第10章 模数转换 140
10.1 概述 140
10.2 I/O引脚分配 140
10.3 ADC输出格式 143
10.4 ADC特性及其使用 144
10.5 ADC的中断控制 146
习题 147
第11章 I/O引脚设置 148
11.1 概述 148
11.2 数字输出引脚功能 148
11.3 数字I/O电路 150
11.4 输入设置 153
习题 154
第12章 LCD屏幕(P3例程) 155
12.1 概述 155
12.2 按钮输入 155
12.3 Screens子程序 158
12.4 P3.ASM——屏幕选项程序例程 162
习题 173
13.2 TIMER1和内部时间间隔测量 174
13.1 概述 174
第13章 时间间隔测量 174
13.3 DisplayMax子程序 178
13.4 扩展内部时间间隔测量 181
13.5 CCP1和外部时间间隔测量 184
13.6 CCP1和内部时间间隔测量 186
13.7 扩展外部时间间隔测量 186
13.8 TIMER3和CCP2的使用 186
13.9 频率测量 188
13.10 温度测量 189
习题 190
第14章 数学运算子程序 192
14.1 概述 192
14.2 乘法 192
14.3 除法 195
14.4 乘法/除法子程序的使用 197
14.5 保持计算精度 201
14.6 浮点子程序 202
14.7 浮点子程序的使用 204
14.8 归一化子程序 205
习题 207
第15章 串行外设接口的I/O扩展 209
15.1 概述 209
15.2 SPI功能 209
15.3 SPI初始化 210
15.4 输出端口扩展 213
15.5 输入端口扩展 214
15.6 多I/O端口扩展 215
15.7 DAC输出 217
15.8 温度输入 219
15.9 主-从互连 222
习题 224
第16章 输出时间间隔控制(P4例程) 226
16.1 概述 226
16.2 时序的外部控制 226
16.3 周期中断发生器 229
16.4 快速任意方波输出 234
16.5 通用任意方波输出 237
习题 243
第17章 外设访问存取总线SMBUS/I2C 246
17.1 概述 246
17.2 SMBUS/I2C总线说明 246
17.3 I2C总线操作 246
17.4 PIC18F452的I2C总线传输 250
17.5 I/O扩展 252
17.6 底层I2C子程序 254
17.7 I/O扩展代码 258
17.8 DAC输出 261
17.9 数字温度计 262
17.10 举例 264
习题 277
第18章 通用异步接收发送器UART 281
18.1 概述 281
18.2 信号波形和波特率的精确度 281
18.3 波特率选择 283
18.4 UART数据处理电路 284
18.5 UART初始化 285
18.6 UART应用 286
习题 289
19.1 概述 290
19.2 PIC16C505概述 290
第19章 可编程外设芯片 290
19.3 键盘外设接口 296
19.4 主程序和LOOPTIME宏 298
19.5 键按下检测 299
19.6 键开关状态机制 300
19.7 UART宏 303
19.8 PIC16C505源文件 304
习题 310
第20章 综合特性 312
20.1 概述 312
20.2 配置字节 312
20.3 振荡器选择 315
20.4 电源电压 316
20.5 低电压检测(LVD) 317
20.6 警戒复位(BOR) 320
20.7 看门狗定时器(WDT) 321
20.8 复位 323
20.9 电池电源操作 326
20.10 定时 329
20.11 数据EEPROM使用 331
20.12 并行从端口(PSP) 334
附录A1 QWIKFLASH开发板装配 336
A1.1 概述 336
A1.2 微芯的ICD2模块 336
A1.3 器件列表 337
A1.4 开发板组装必备工具 339
A1.5 焊接技巧 340
A1.6 开发板结构 341
A1.7 清除焊剂 347
A1.8 LCD安装前的性能验证 347
A1.10 性能验证 348
A1.9 安装LCD 348
A1.11 QWIKBUG性能验证 349
附录A2 用附加的QwikProto板进行实验室升级 350
A2.1 板和器件 350
A2.2 结构 351
A2.3 引脚使用条件 351
A2.4 工程概念 353
A2.5 作者的工作站 354
附录A3 MPLAB用户接口的结构化汇编程序使用 357
A3.1 安装SASM 357
A3.2 Project设置 357
A3.3 QWIKADDRESS实用程序应用 358
附录A4 QWIKBUG监控程序 359
A4.1 概述 359
A4.2 资源利用 359
A4.3 ICD2模块的QwikBug安装 360
A4.4 P16PRO PIC编程器的QwikBug安装 362
A4.5 QWIKBUG验证 363
A4.6 自启动特征 364
A4.7 命令键 364
A4.8 帮助命令(F1或H) 364
A4.9 复位命令(F2或T) 365
A4.10 加载命令(F3或L) 365
A4.11 显示命令(F4或D) 366
A4.12 断点命令(F5或B) 366
A4.13 监视命令(F6或W) 367
A4.14 运行命令(F7或R) 368
A4.15 单步命令(F8或S) 368
A4.17 修改QwikBug 369
A4.18 致谢 369
A4.16 修改命令(F9或M) 369
附录A5 QwikAddress和QWIKPH实用程序 371
A5.1 概述 371
A5.2 David Flower的QwikAddress实用程序 371
A5.3 CHRIS TWIGG的QWIKPH实用程序 374
附录A6 数学子程序的验证 377
附录A7 PIC18F452的C编程应用 378
附录A8 PIC18F452特殊功能寄存器及其位 412
附录A9 器件和封装 416
附录A10 课程组织和实验室规划 417
A10.1 课程安排 417
A10.2 实验室建立 418
A10.3 实验室设备 419
A10.4 编译器编码与构造比较,编译器编码与C代码比较 419
A10.5 10个项目 420
词汇表 433