AVR单片机很简单:C语言快速入门及开发实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 AVR单片机的基本结构

如图1-1所示为AVR单片机的结构框图。AVR单片机抛弃了复杂指令计算机指令(CISC),采用精简指令集(RISC),一条指令可以在一个时钟周期内同时访问两个独立的寄存器,并以字作为指令长度单位,具有取值周期短、可预取指令的特点,可达到IMIPS/MHz的高速运行处理能力。

图1-1 AVR单片机结构框图

快速存取RISC寄存器是由AVR的内核中的32个通用工作寄存器构成的,在一个时钟周期内可执行一个完整的ALU操作,操作流程为:先从寄存器中取出操作数,执行操作,最后将操作结果放回目的寄存器中。通用寄存器还可以代替累加器,克服了采用单一ACC进行处理造成的瓶颈现象,同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。

在32个通用工作寄存器中,有6个可以用作3个16位的间接地址寄存器指针以寻址数据空间,实现高效的地址运算,它们分别称为X寄存器、Y寄存器、Z寄存器,其中一个指针还可以作为程序存储器查询表的地址指针。

AVR单片机采用CMOS技术,具有高速度、低功耗的特点,同时还具有休眠(SLEEP)功能。为了最大限度的提高并行处理的运行效率,它运用了Harvard结构,即程序存储器和数据存储器使用不同的存储空间和总线,可直接访问全部的灵敏据存储器和程序存储器,寄存器文件被双向映射并能被访问,算术逻辑单元(ALU)在执行某一指令时,下一个指令被预先从程序存储器中提取处理,提高了MCU的运行效率。

算术逻辑单元(ALU)支持寄存器之间以及寄存器和常数之间的算术和逻辑运算,以及单一寄存器操作,每次的运算结果都通过状态寄存器(SREG)反映出来。

程序流程通过有/无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间,大多数指令长度为16位,也即每个程序存储器地址都包含一条16位和32位的指令。

AVR的程序存储器空间分为引导程序区和应用程序区。它们的读和读/写保护由对应的锁定位来实现。用于写应用程序区的SPM指令必须位于引导程序区。

AVR单片机内嵌高质量的可擦写10000次的Flash程序存储器,擦写方便,支持ISP和LAP,便于产品的调试、开发、生产、更新。内嵌可擦写10000次的E2PROM。可多次更改程序,快速完成商品化。片内大容量的RAM可有效支持使用高级语言开发系统程序,并可扩展外部RAM。

在中断和子程序调用过程中,程序计数器(PC)中返回地址被保存在堆栈之中,而堆栈处于数据存储器(SRAM)中,因此堆栈的大小只受系统总的静态存储器(SRAM)的大小及其使用情况的限制。

AVR存储器空间为线性的平面结构。它具有一个灵活的中断模块,每个中断都对应一个中断入口地址,各个中断的优先级与其在中断入口地址有关,中断入口地址越小,中断优先级就越高。

I/O存储器空间包含64个I/O寄存器空间,它们用来控制MCU的各个外围功能。映射到数据空间即为寄存器文件之后的地址为$20~$5F。

AVR单片机的I/O线带有可设置的上拉电阻,可单独设定为输入/输出,作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10~20mA(吸入输出);作输出时可输出40m(单一输出)大电流,可直接驱动固态继电器(SSR),内置看门狗定时装置(WDT),使得I/O口资源灵活,产品抗干扰能力强。

AVR单片机内具备多种独立的时钟分频器,可以提供给串行异步通信(URAT)、SPI传输功能使用。8/16位定时/计数器可作比较器、计数器外部中断和PWM用于控制输出。AVR单片机的定时/计数器进行(单)双向计数形成三角波,并与输出比较匹配寄存器配合,可生成占空比、频率、相位都可变的方波信号。

AVR单片机有自上电复位电路(POR)、独立的看门狗电路(WDT)、低电压检测电路BOD,多个复位源,只要在复位端接一个上拉电阻就可以了,不需要外接外部复位器件。

AVR单片机具有Flash程序存储器、看门狗、E2PROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时/计数器等多种器件和增强可靠性的复位系统、降低功耗抗干扰的休眠模式,品种多门类全的中断系统、具输入捕获和比较匹配输出等多样化功能的定时/计数器、具替换功能的I/O端口多种功能,性能十分强大,内部结构比较复杂。