ATMEGA16中文资料
mega16的中文资料,详细数据手册,包括引脚,寄存器,外围电路等等都有详细介绍ATmega16(L)综述ATmega16是基于增强的 AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指合集以及单时钟周期指合执行时间, ATmega16的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。方框图Figure2.结构框图----------个m2466G-AVR-10/03微控实验网》单片机学习、工控开发及电子制作园地http://www.mcusy.cnAVR内核具有丰富的指合集和32个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指合可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的cSC微控制器最高至10倍的数据吞吐率。ATmega16有如下特点:16K字节的系统内可编程Fash(具有同时读写的能力,即RWW)512字节 EEPROM,1K字节SRAM,32个通用O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(TC,片内/外中断,可编程串行 USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC,具有片内振荡器的可编程看门狗定时器,一个SP串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而 USART、两线接口、AD转换器、SRAM、T/C、SP|端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有丨o模块的工作,以降低ADC转换时的开关噪声; Standby模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展 Standby模式下则允许振荡器和异步定时器继续工作。本芯片是以Atme高密度非易失性存储器技术生产的。片内| SP Flash允许程序存储器通过SP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Fash存储区(App| licationFlash Memory)。在更新应用 Flash存储区时引导Fash区( Boot Flash Memory)的程序继续运行,实现了RWW操作。通过捋8位 RISC CP!与系统内可编程的 Flash集成在一个芯片内, ATmega16成为一个功能强大的单片机,为多嵌入式控制应用提供了灵活而低成本的解决方案。ATmega16具有一整套的编程与系统开发工吳,包括:C语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。引脚说明VCC数字电路的屯源◇GND端口A(PA7.PA0)端口A做为AD转换器的模拟输入端。端口A为8位双向O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若內部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A处于高阻状态。端口B(PB7PB0)端口B为8位双向O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时捋输出电流。在复位过程中,即使系统时钟还未起振,端口B处于高阻状态。端口B也可以用做其他不同的特殊功能,请参见P56。端口C(PC7PC0)端口C为8位双向W/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时捋输出电流。在复位过程中,即使系统时钟还未起振,端口C处于高阻状态。如果JTAG接口使能,即使复位出现引脚PC5(TD)、PC3(TMS)与PC2(TCK)的上拉电阻被激活。端口C也可以用做其他不同的特殊功能,请参见P59。4 ATmega16(L)2466G-AVR-10/03微控实验网》单片机学习、工控开发及电子制作园地http://www.mcusy.crATmega16(L)端口D(PD7PD0)端口D为8位双向MO口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输岀和吸收大电流。作为输廴使用时,若内部上拉电阻使能,则端口被外部电路拉低时烀输出电流。在复位过程中,即使系统时钟还未起振,端口D处于高阻状态。端口口也可以用做其他不同的特殊功能,请参见P61。RESET复位输入引脚。持续时间超过最小门限时间的低电邳引起系统复位。门限时间见P36 Table15。持续时间小于门限间的脉冲不能保证可靠复位。XTAL1反向振荡放大器与片内时钟操作电路的输入端。XTAL2反向振荡放大器的输出端。AVCCAVcC是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与∨cc连接。使用ADC时应通过一个低通滤波器与Vcc连接。AREFAD的模拟基准输入引脚。代码例子本数据手册包含了一些简单的代码例子以说明如何使用芯片各个不同的功能模块。这些例子都假定在编译之前已经包含了正确的头文件。有些C编译器在头文件里并没有包含位定义,而且各个C编译器对中断处理有自己不同的处理方式。请注意查阅相关文档以获取具体的信息。个m52466G-AVR-10/03微控实验网》单片机学习、工控开发及电子制作园地http://www.mcusy.crmAVR CPU内核介绍本节从总体上讨论AVR内核的结构。CP∪的主要任务是保证程序的正确执行。因此它必须能够访问存储器、执行运算、控制外设以及处理中断。结构综述Figure3.AVR结构的方框图为了获得最高的性能以及并行性,AVR采用了 Harvard结构,具有独立的数据和程序总线。程序存储器里的指合通过一级流水线运行。CPU在执行一条指合的同时读取下一条指爷(在本文称为预取)。这个概念实现了指合的单时钟周期运行。程序存储器是可以在线编程的 FLASH。快速访问寄存器文件包括32个8位通用工作寄存器,访问时间为一个时钟周期。从而实现了单时钟周期的ALU操作。在典型的ALU操作中,两个位于寄存器文件中的操作数同时被访问,然后执行运算,结果再被送回到寄存器文件。整个过程仅需一个时钟周期。寄存器文件里有6个寄存器可以用作3个16位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加的功能寄存器即为16位的X、Y、乙寄存器。ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器操作。运算完成之后状态寄存器的内容得到更新以反映操作结果。多数指合长度为16位,亦即每个程序存储器地址都包含一条16位或32位的命。米程序流程通过有/无条件的跳转指合和调用指合来控制,从而接寻址整个地址空间程序存储器空间分为两个区:引导程序区(Boot区)和应用程序区。这两个区都有专门的锁定位以实现读和读/写保护。用于写应用程序区的SPM指合必须位于引导程序区。在中斷和调用子程序时返回地址的程序计数器(PC)保存于堆栈之中。堆栈位于通用数据SRAM,因此其深度仅受限于SRAM的大小。在复位例程里用户首先要初始化堆栈指针6 ATmega16(L)2466G-AVR-10/03微控实验网〉单片机学习、工控井发及电子制作园地httpATmega16(L)SP。这个指针位于ⅣO空间,可以进行读写访问。数据SRAM可以通过5种不同的寻址模式进行访问AVR存储器空间为线性的平面结构。AVR有一个灵活的中断模块。控制寄存器位于O空间。状态寄存器里有全局中断使能位。每个中断在中断向量表里都有独立的中断向量。各个中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。JO存储器空间包含64个可以值接寻址的地址,作为CPU外设的控制寄存器、SP|,以及其他∥O功能。映射到数据空间即为寄存器文件之后的地址0x20-0×5FALU算术逻辑单元AVR ALU与32个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间的ALU运算只需要一个时钟周期。ALU操作分为3类:算术、逻辑和位操作。此外还提供了支持无/有符号数和分数乘法的乘法器。具体请参见指爷集。状态寄存器状态寄存器包含了最近执行的算术指合的结果信息。这些信息可以用来改变程序流程以实现条件操作。如指合集所述,所有ALU运算都将影响状态寄存器的内容。这样,在许多情况下就不需要专门的比较指合了,从而使系统运行更快速,代码效率更高。在进入中断服务程序时状态寄存器不会自动保存,中断返回时也不会自动恹复。这些工作需要软件来处理。AVR中断寄存器SREG定义如下:50HSREG读/写R/WR/W初始值·Bit7-l:全局中贿使能置位时使能全局中断。单独的中断使能由其他独立的控制寄存器控制。如果清零,则不论单独中断行志匱位与否,都不会产生中断。任意一个中断发生后清零,而执行RET指合后饭复匱位以使能中断。1也可以通过SE|和C凵指合来置位和清雩。Bit6-T:位拷贝存储位拷贝指合BLD和BST利用T作为目的或源地址。BST把寄存器的某一位拷贝到T,而BLD把T拷贝到寄存器的某一位·Bit5-H:半进位标志半进位标志H表示算术操作发生了半进位。此标志对于BCD运算非常有用。详见指合集的说明。Bit4-S:符号位,S=NVs为负数标志N与2的补码湓出标志V的异或。详见指合集的说明。Bit3-V:2的补码溢出标志支持2的补码运算。详见指合集的说明。·Bit2-N:负数标志表明算术或逻辑操作结果为负。详见指爷集的说明。个m2466G-AVR-10/03微控实验网》单片机学习、工控开发及电子制作园地http://www.mcusy.crAmeL·Bit1-z:零标志表明算术或逻辑操作结果为霁。详见指爷集的说明。·Bit0-C:进位标志表明算术或逻辑操作发生了进位。详见指爷集的说明。8 ATmega16(L)2466G-AVR-10/03微控实验网》单片机学习、工控开发及电子制作园地http://www.mcusy.crATmega16(L)通用寄存器文件寄存器文件针对AVR增强型RSC指合集做了优化。为了获得需要的性能和灵活性,寄存器文件支持以下的输入/输出方案输出一个8位操作数,输人一个8位结果输出两个8位位操作数,输人一个8位结果输出两个8位位操作数,输人一个16位结果输出一个16位位操作数,输入一个16位结果Figure4为cPU32个通用工作寄存器的结构。Figure4. AVR CPU通用工作寄存器0AddrROR10102R13通用R14SOE工作R15SOl寄存器R16$R17$11R26S1AⅩ寄存器,低字节(R27S1BX寄存器,高字节rY寄存器,低字节Y寄存器,高字节R3S1EZ奇存器,低字节R31$1FZ寄存器,高字节大多数操作资存器文件的指合都可以直接访问所有的寄存器,而且多数这样的指合的执行时间为单个时钟周期如Fure4所示,每个寄存器都有一个数据内存地址,将他们值接映射到用户数据空间的头32个地址。虽然寄存器文件的物理实现不是SRAM,这种内存组织方式在访问寄存器方面具有极大的灵活性,因为X、Y、Z寄存器可以设置为指向任意寄存器的指针。个m2466G-AVR-10/03微控实验网》单片机学习、工控开发及电子制作园地http://www.mcusy.crX、Y、z寄存器寄存器R26.R31除了用作通用寄存器外,还可以作为数据间接寻址用的地址指针。这三个间接寻址寄存器示于 Figure5。Figure5.Ⅹ、Y、z寄存器15X寄存器R27(51B)R26($1A)15丫寄存器07R29($1D)R28($1c15ZH0z寄存器00R31($1F)R30($1E在不同的寻址模式中,这些地址寄存器可以实现固定偏移量,自动加一和自动减一功能。具体细节请参见指合集。堆栈指针堆栈指针主要用来保存临时数据、局部变量和中断/子程序的返回地址。堆栈指针总是指向堆栈的顶部。要注意AVR的堆栈是向下生长的,即渐数据推入堆栈时,堆栈指针的数值将减小。如果在调用或中断后读程序计数器,未用位(15:13)应屏蔽。堆栈指针指向数据SRAM堆栈区。在此聚集了子程序堆栈和中断堆栈。调用子程序和使能中断之前必须定义堆栈空闯,且堆指针必须指向高于0X60的地址空间。使用PUSH指合将数据推入堆栈时指针减、前子程序或中断返回地址推入堆栈时指针将减二。使用POP指合烀数据弹出谁栈时,堆栈指针加一;而用RET或RET指合从子程序或中断返回时堆栈指针加二。AVR的栈指针由O空间中的两个8寄存器实现。实际使用的位数与具体器件有关。请注意某AR器件的数据区太小,用SPL就足够了。此时将不给出SPH寄存器3151413121098SP15SP14SP13SP12SP11SP10SP9SP8SPHSP7SP6SP5SP4SP3SP2SP1SPO读/写R/WR/WR/W初始值0010 ATmega16(L)2466G-AVR-10/03微控实验网>单片机学习、工控廾发及电子制作园地http://www.mcusy.cr
暂无评论