标题：Atmega16
Atmega16介绍
ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间，ATmega16 的数据吞吐率高达1 MIPS/MHz，从而可以减缓系统在功耗和处理速度之间的矛盾[1]。 　　
ATmega16 AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与运算逻单元(ALU) 相连接，使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率，并且具有比普通的CISC 微控制器最高至10 倍的数据吞吐率。 　　
ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力，即RWW)，512 字节EEPROM，1K 字节SRAM，32 个通用I/O 口线，32 个通用工作寄存器，用于边界扫描的JTAG 接口，支持片内调试与编程，三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断，可编程串行USART，有起始条件检测器的通用串行接口，8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ，具有片内振荡器的可编程看门狗定时器，一个SPI 串行端口，以及六个可以通过软件进行选择的省电模式。 　　
工作于空闲模式时CPU 停止工作，而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作；掉电模式时晶体振荡器停止振荡，所有功能除了中断和硬件复位之外都停止工作；在省电模式下，异步定时器继续运行，允许用户保持一个时间基准，而其余功能模块处于休眠状态； ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作，以降低ADC 转换时的开关噪声； Standby 模式下只有晶体或谐振振荡器运行，其余功能模块处于休眠状态，使得器件只消耗极少的电流，同时具有快速启动能力；扩展Standby 模式下则允许振荡器和异步定时器继续工作。 　　
本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口，或者通用编程器进行编程，也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行，实现了RWW 操作。 通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内， ATmega16 成为一个功能强大的单片机，为许多嵌入式控制应用提供了灵活而低成本的解决方案。
ATmega16 具有一整套的编程与系统开发工具，包括：C 语言 编译器、宏汇编、 程序调试器/ 软件仿真器、仿真器及评估板。 　　
ATmega16产品特性u 高性能、低功耗的8位AVR微处理器 　　
l 先进的RISC 结构 　　
l 131条指令 　　
l 大多数指令执行时间为单个时钟周期 　
l 32个8位通用工作寄存器 　　
l 全静态工作 　　
l 工作于16MHz时性能高达16MIPS 　　
l 只需两个时钟周期的硬件乘法器 　　
l 非易失性程序和数据存储器 　　
l 16K 字节的系统内可编程Flash，擦写寿命: 10,000次 　　
l 具有独立锁定位的可选Boot代码区，通过片上Boot程序实现系统内编程，真正的同时读写操作 　　
l 512 字节的EEPROM，擦写寿命: 100,000次 　　
l 1K字节的片内SRAM 　　
l 可以对锁定位进行编程以实现用户程序的加密 　　
l JTAG 接口( 与IEEE 1149.1 标准兼容) 　　
l 符合JTAG 标准的边界扫描功能 　　
l 支持扩展的片内调试功能 　　
l 通过JTAG 接口实现对Flash、EEPROM、熔丝位和锁定位的编程 　　
外设特点u 两个具有独立预分频器和比较器功能的8位定时器/计数器 　　
l 一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器 　　
l 具有独立振荡器的实时计数器RTC 　　
l 四通道PWM 　　
l 8路10位ADC，8个单端通道，2个具有可编程增益（1x, 10x, 或200x）的差分通道 　　
l 面向字节的两线接口 　　
l 两个可编程的串行USART 　　
l 可工作于主机/ 从机模式的SPI 串行接口 　　
l 具有独立片内振荡器的可编程看门狗定时器 　　
l 片内模拟比较器 　　
u 特殊的处理器特点 　　
l 上电复位以及可编程的掉电检测 　　
l 片内经过标定的RC振荡器 　　
l 片内/片外中断源 　　
l 6种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby模式 　　u I/O和封装 　　
l 32个可编程的I/O口 　　
l 40引脚PDIP封装, 44引脚TQFP封装, 与44引脚MLF封装 　　
u 工作电压: 　　
l ATmega16L：2.7 - 5.5V 　　
l ATmega16：4.5 - 5.5V 　　
u 速度等级l 8MHz ATmega16L 　　
l 0-16MHz ATmega16 　　
u ATmega16L在1MHz, 3V, 25°C时的功耗 　　
l 正常模式: 1.1 mA 　　
l 空闲模式: 0.35 mA 　　
l 掉电模式: < 1 μA 　　
ATmega16 引脚功能
引脚名称引脚功能说明VCC 电源正
GND 电源地
端口A(PA7..PA0)
端口A 做为A/D 转换器的模拟输入端。端口A 为8 位双向I/O 口，具有可编程的内部上拉电阻。其输出缓冲器具  ATmega引脚图[2]有对称的驱动特性，可以输出和吸收大电流。作为输入使用时，若内部上拉电阻使能，端口被外部电路拉低时将输出电流。在复位过程中，即使系统时钟还未起振，端口A 处于高阻状态。 　　
端口B(PB7..PB0)
端口B 为8 位双向I/O 口，具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性，可以输出和吸收大电流。作为输入使用时，若内部上拉电阻使能，端口被外部电路拉低时将输出电流。在复位过程中，即使系统时钟还未起振，端口B 处于高阻状态。 　　
端口B 也可以用做其他不同的特殊功能. 　　
端口C(PC7..PC0)
端口C 为8 位双向I/O 口，具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性，可以输出和吸收大电流。作为输入使用时，若内部上拉电阻使能，端口被外部电路拉低时将输出电流。在复位过程中，即使系统时钟还未起振，端口C 处于高阻状态。如果JTAG接口使能，即使复位出现引脚 PC5(TDI)、 PC3(TMS)与 PC2(TCK)的上拉电阻被激活。端口C 也可以用做其他不同的特殊功能. 　　
端口D(PD7..PD0)
端口D 为8 位双向I/O 口，具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性，可以输出和吸收大电流。作为输入使用时，若内部上拉电阻使能，则端口被外部电路拉低时将输出电流。在复位过程中，即使系统时钟还未起振，端口D 处于高阻状态。端口D 也可以用做其他不同的特殊功能. 　　
RESET 复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。门限时间见P36Table 15。持续时间小于门限间的脉冲不能保证可靠复位。 　　
XTAL1
反向振荡放大器与片内时钟操作电路的输入端。 　　
XTAL2
反向振荡放大器的输出端。 　　
AVCC
AVCC是端口A与A/D转换器的电源。不使用ADC时，该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC 连接。 　　
AREF
A/D 的模拟基准输入引脚。 　　
ATmega16 内核介绍右边为AVR 结构的方框图 　　
为了获得最高的性能以及并行性， AVR 采用了Harvard 结构，具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令( 在本文称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的FLASH。  ATmega16内部框图[3]
快速访问寄存器文件包括32 个8 位通用工作寄存器，访问时间为一个时钟周期。从而实现了单时钟周期的ALU 操作。在典型的ALU 操作中，两个位于寄存器文件中的操作数同时被访问，然后执行运算，结果再被送回到寄存器文件。整个过程仅需一个时钟周期。 　　
寄存器文件里有6 个寄存器可以用作3 个16 位的间接寻址寄存器指针以寻址数据空间，实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加的功能寄存器即为16 位的X、Y、Z 寄存器。 　　
ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器操作。运算完成之后状态寄存器的内容得到更新以反映操作结果。 　　
程序流程通过有/ 无条件的跳转指令和调用指令来控制，从而直接寻址整个地址空间。大多数指令长度为16 位，亦即每个程序存储器地址都包含一条16 位或32 位的指令。 　　
程序存储器空间分为两个区：引导程序区(Boot 区) 和应用程序区。这两个区都有专门的锁定位以实现读和读/ 写保护。用于写应用程序区的SPM 指令必须位于引导程序区。 　　
在中断和调用子程序时返回地址的程序计数器(PC) 保存于堆栈之中。堆栈位于通用数据SRAM，因此其深度仅受限于SRAM 的大小。在复位例程里用户首先要初始化堆栈指针SP。这个指针位于I/O 空间，可以进行读写访问。数据SRAM 可以通过5 种不同的寻址模式进行访问。 　　
AVR 存储器空间为线性的平面结构。 　　
AVR有一个灵活的中断模块。控制寄存器位于I/O空间。状态寄存器里有全局中断使能位。每个中断在中断向量表里都有独立的中断向量。各个中断的优先级与其在中断向量表的位置有关，中断向量地址越低，优先级越高。 　　I/O 存储器空间包含64 个可以直接寻址的地址，作为CPU 外设的控制寄存器、SPI，以及其他I/O 功能。映射到数据空间即为寄存器文件之后的地址0x20 - 0x5F。 　
AVR单片机的型号标识解析1. 型号紧跟的字母，表示电压工作范围。带“V”：1.8-5.5V；若缺省，不带“V”：2.7-5.5V。 　　
例：ATmega48-20AU，不带“V”表示工作电压为2.7-5.5V。 　　
2. 后缀的数字部分，表示支持的最高系统时钟。 　　例：ATmega48-20AU，“20”表示可支持最高为20MHZ的系统时钟。 　　
3. 后缀第一（第二）个字母，表示封装。“P”：DIP封装，“A”：TQFP封装，“M”：MLF封装。 　　例：ATmega48-20AU，“A”表示TQFP封装。 　　
4. 后缀最后一个字母，表示应用级别。“C”：商业级，“I”：工业级（有铅）、“U”工业级（无铅）。 　　例：ATmega48-20AU，“U”表示无铅工业级。ATmega48-20AI，“I”表示有铅工业级。 　　AVR 8-Bit MCU的最大特点 　　
与其它8-Bit MCU相比，AVR 8-Bit MCU最大的特点是： 　　
· 哈佛结构，具备1MIPS / MHz的高速运行处理能力； 　　
· 超功能精简指令集（RISC），具有32个通用工作寄存器，克服了如8051 MCU采用单一ACC进行处理造成的瓶颈现象； 　　
· 快速的存取寄存器组、单周期指令系统，大大优化了目标代码的大小、执行效率，部分型号FLASH非常大，特别适用于使用高级语言进行开发； 　　
· 作输出时与PIC的HI/LOW相同，可输出40mA（单一输出），作输入时可设置为三态高阻抗输入或带上拉电阻输入，具备10mA-20mA灌电流的能力； 　　
· 片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能，外围电路更加简单，系统更加稳定可靠； 　　
· 大部分AVR片上资源丰富：带E2PROM，PWM，RTC，SPI，UART，TWI，ISP，AD，Analog Comparator，WDT等； 　　
· 大部分AVR除了有ISP功能外，还有IAP功能，方便升级或销毁应用程序。 　　
AVR单片机的应用区域目前，AVR已被广泛用于： 　　
· 空调控制板 　　
· 打印机控制板 　　
· 智能电表 　　
· 智能手电筒 　　
· LED控制屏 　　
· 医疗设备 　　
· GPS 　　
从市场角度看AVR单片机 　　
· 性价比：AVR大部分型号的性价比较高，性价比表现突出的型号有：atmega48、atmega8、atmega16、atmega169P 　　
· 供货方面：通用型号的AVR供货较为稳定，非常规型号的AVR样品及供货仍存在问题。 　　
· 市场占有率：目前，AVR的市场占有率还是不如PIC与51，但，AVR的优点使得AVR的市场占有一直在扩展，AVR的年用量也一直在上涨。