序言 1
前言 1
上篇 1
第1章 AVR概述 1
1.1 单片机及其发展 1
1.1.1 单片机概述 1
1.1.2 单片机的发展历史及其特点 2
1.1.3 单片机的分类 3
1.2.1 概述 5
1.2 AVR系列微控制器 5
1.2.2 AVR处理器的特点 7
1.2.3 AVR处理器的应用领域 9
第2章 ATmega处理器 10
2.1 ATmega单片机系列产品 10
2.2 ATmega128概述 11
2.2.1 ATmega128的结构 11
2.2.2 ATmega128的特点 14
2.3 ATmega640/1280/1281/2560/2561概述 15
2.3.1 ATmega640/1280/1281/2560/2561的结构 15
2.3.2 ATmega640/1280/1281/2560/2561的特点 19
2.4 ATmega128/2561的应用范例 20
第3章 ATmega128与ATmega2560系列芯片硬件结构 22
3.1 片的MCU内核 22
3.1.1 概述 22
3.1.2 芯片MCU的功能模块 23
3.2 存储器 28
3.2.1 AVR ATmega128和ATmega2560系列存储器组织 28
3.2.2 外部存储器扩展 30
3.2.3 EEPROM读/写访问 38
3.2.4 支持引导程序加载的存储器自编程 41
3.2.5 ATmega的锁定位、熔丝位、标识位和校正位 52
3.3 I/O端口 66
3.3.1 概述 66
3.3.2 通用数字I/O端口 66
3.3.3 端口的第二功能 71
3.4 系统定时与中断 81
3.4.1 系统时钟 81
3.4.2 中断 88
3.4.3 外部中断 92
3.4.4 定时/计时器 96
3.4.5 输出比较调制器(OCM1C2) 132
3.5 电源管理 133
3.5.1 概述 133
3.5.2 睡眠模式 135
3.5.3 系统最小化功耗设计 137
3.6 系统控制与复位 138
3.6.1 复位源 142
3.6.2 片内参考电压源 144
3.6.3 看门狗定时器 144
3.7 通信接口 146
3.7.1 同步串行通信接口SPI 147
3.7.2 通用同步/异步串行接收器和转发器USART 152
3.7.3 两线串行总线接口TWI(I2C) 168
3.8 模拟比较器及模/数转换接口ADC 187
3.8.1 模拟比较器 187
3.8.2 模数转换器 190
3.9 JTAG接口与在线调试系统 206
3.9.1 IEEE1149.1-1990(JTAG)概述 207
3.9.2 JTAG接口 207
3.9.3 JTAG指令 210
3.9.4 JTAG在线调试系统OCD 214
3.9.5 IEEE1149.1(JTAG)边界扫描 215
3.9.6 JTAG串行编程 222
3.10 ATmega128到ATmega2560系列的移植 228
3.10.1 通用端口 228
3.10.2 存储器 228
3.10.3 时钟源和中断 229
3.10.4 电源管理与BOD 229
3.10.5 看门狗电路和USART SPI 230
3.10.6 定时器/计数器 230
3.10.7 模数转换器和模拟比较器 230
4.1 ISC与RISC 232
第4章 指令系统和汇编语言 232
4.2 AVR的汇编语言指令格式与寻址方式 234
4.2.1 指令格式 234
4.2.2 寻址方式 238
4.3 ATmega128与ATmega2560系列芯片指令集概述 243
4.4 算术和逻辑指令 247
4.4.1 算术运算指令 247
4.4.2 逻辑运算指令 254
4.5 条件转移指令 259
4.6.1 位变量修改指令 276
4.6 位操作和位测试指令 276
4.6.2 逻辑操作指令 282
4.6.3 寄存器的位操作指令 284
4.7 数据传输指令 285
4.7.1 直接数据传输指令 285
4.7.2 间接数据传送指令 288
4.7.3 程序存储器操作指令 292
4.7.4 I/O数据传送指令 294
4.7.5 堆栈操作指令 295
4.8 MCU控制指令 296
5.1 AVR开发板 298
5.1.1 STK50x系列开发板 298
下篇 298
第5章 ATmega系列芯片开发工具及应用 298
5.1.2 应用Protel制作IN128开发板 302
5.2 JTAG ICE仿真器 306
5.2.1 概述 306
5.2.2 JTAGICE的使用 308
5.3 AVR编译器及相关开发工具 309
5.3.1 AVR GCC简介 309
5.3.2 WinAVR 310
5.3.3 AtmanAvr 313
5.3.4 ICCAVR 318
5.4 AVR集成开发环境 321
5.4.1 AVR Studio 321
5.4.2 VMLAB 328
第6章 AVR单片机系统开发流程 335
6.1 功能分析与顶层设计 335
6.1.1 功能分析 335
6.1.2 顶层设计 336
6.2.1 元器件选择 337
6.2 系统硬件设计 337
6.2.2 电路设计 341
6.2.3 硬件电路的计算机辅助设计 342
6.2.4 单片机应用技术 342
6.3 系统软件设计 347
6.3.1 软件总体设计 347
6.3.2 程序设计 349
6.3.3 软件可靠性设计 349
6.4 单片机系统仿真与程序下载 351
6.4.1 软件调试和系统仿真 351
6.4.2 AVR单片机程序下载 352
第7章 ATmega应用设计 353
7.1 AVR的熔丝位 353
7.1.1 ATmega2560系列熔丝位的配置 354
7.1.2 ATmega128熔丝位的配置 354
7.1.3 JTAP口的配置与使用 355
7.2 自引导程序IAP的应用设计 356
7.2.1 引导程序汇编代码 356
7.2.2 一个实用的BootLoad应用实例 358
7.3.1 读/写EEPROM的方法 365
7.3 EEPROM存储器应用设计 365
7.3.2 快速读取EEPROM的实用方法 366
7.4 I/O中断应用设计 368
7.5 系统定时/计数器应用设计 371
7.5.1 看门狗定时器的应用 371
7.5.2 系统计数器的应用 372
7.6 通用串行接口USART应用 376
7.6.1 串口通讯的概念 376
7.6.2 串口通信基本接线方法 376
7.6.3 ATmega128完成串口通信电路图 377
7.6.4 代码设计 378
7.7 SPI接口的应用设计 382
7.8 TWI接口及接口器件的使用 386
7.9 ADC转换应用设计 387
7.9.1 常用ADC方式 388
7.9.2 基于串口通信的温度采集与显示 390
第8章 综合设计实例 394
8.1 MEGA-METER的设计与实现 394
8.1.1 系统功能说明 394
8.1.3 硬件设计 395
8.1.2 系统总体设计 395
8.1.4 软件设计 401
8.2 高精度GPS终端的设计与实现 409
8.2.1 系统功能说明 409
8.2.2 系统总体设计 411
8.2.3 硬件设计 413
8.2.4 软件设计 417
附录1 428
附录2 432
附录3 439
参考文献 442