您的位置 首页 IC

AVR汇编初探之一《AVR单片机的CPU内部结构》

学单片机那么久了,感觉想要深入,还得看汇编语言,至少得了解单片机内部结构。下面就以ATmega16为例,介绍一下AVR单片机结构和汇编语言。AVR单片机的CPU内核结构如上两图

  学单片机那么久了,感觉想要深化,还得看汇编语言,至少得了解单片机内部结构。

  下面就以ATmega16为例,介绍一下AVR单片机结构和汇编语言。

  AVR单片机的CPU内核结构

    

 

  如上两图,左图是虚线框内AVR CPU的内核结构,右图是AVR单片机内核结构的方框图,能够看出AVR单片机的数据总线(CPU字长)是8位的,也就说它是8位单片机。

  AVR采用了Harvard结构,具有独立的数据和程序总线,CPU在履行一条指令的一起,就将PC中指定的下一条指令取出,构成了一级流水线运转方法,完成了一个时钟周期履行一条指令,数据吞吐量高达1MIPS/MHz。

  AVR CPU内核由几个重要的部分组成,它们别离是:

  A.管用逻辑单元ALU(Arithmetic Logic Unit)

  AVR ALU与32个通用作业寄存器直接相连。寄存器与寄存器之间、寄存器与当即数之间的ALU运算只需求一个时钟周期。ALU操作分为3类:算术、逻辑和位操作,此外还供给了支撑无/有符号数和分数乘法的乘法器,操作成果的状况将影响到状况寄存器SREG(Status Register)。

  B.程序计数器PC、指令寄存器和指令译码器

  程序计数器PC用来寄存下一条需求履行指令在程序存储器(ROM)空间的地址(指向FlashROM空间),取出的指令寄存在指令寄存器中,然后送入指令译码器中发生各种操控信号,操控CPU的运转(履行指令)。

  AVR一条指令的长度大多数为16位,还有少部分为32位,因而AVR的程序存储器结构实际上是以字(16位)为一个存储单元的。

  ATmega16单片机的程序计数器为13位,正好满意了对片内8K字(及16K字节)的Flash程序存储器空间直接寻址的需求。

  C.通用寄存器General Purpose Registers

  在AVR中,由命名为R0~R31的32个8位通用作业寄存器构成一个“通用快速作业寄存器组”,为ALU供给操作数。它们的在RAM的映射空间地址是$0000~$001F,其中有6个寄存器($001A-$001F)能够合并为3个16位直接寻址寄存器指针,别离被称为X寄存器,Y寄存器,和Z寄存器,用于对数据存储器(SRAM)进行直接寻址。

  D.状况寄存器-SREG

  状况寄存器SREG是一个8位标志寄存器,用来寄存指令履行后的有关状况和成果的标志,各位状况一般是在指令履行过程中主动发生的,但也能够由用户依据需求用专用指令加以改动。

    

 

  位7-I:大局中止使能位

  当I位被置位时,标明CPU能够呼应中止请求,反之,则一切中止被制止。I位能够经过SEI和CLI指令来置位和清零,在中止发生后,I位由硬件铲除,并由RETI(中止回来)指令置位。

  位6-T:位复制存储

  位复制指令BLD和BST运用T作为意图或源地址。BST把寄存器的某一位复制到T,而BLD把T复制到寄存器的某一位。

  位5-H:半进位标志 半进位标志H标明算术操作发生了半进位,此标志关于BCD运算十分有用。

  位4-S:符号位 S=N⊕V,S为负数标志N与2的补码溢出标志V的异或

  位3-V:2的补码溢出标志,支撑2的补码运算

  位2-N:负数标志 标明算术或逻辑操作成果为负

  位1-Z:零标志 标明算术或逻辑操作成果为零

  位0-C:进位标志 标明算术或逻辑操作发生了进位

  E.仓库指针寄存器SP(Stack Point)

  仓库指针首要用来保存暂时数据、局部变量和中止/子程序的回来地址。仓库指针总是指向仓库的顶部,AVR的仓库是向下成长的,即新的数据推入仓库时,仓库指针的数值将减小。

  处在I/O地址空间的&3E($005E)和$3D($005D)的两个8位寄存器构成了AVR单片机的16位仓库指针寄存器SP,别离为SPH,SPL。

  仓库指针指向数据SRAM仓库区,有必要指向高于0x60的地址空间,所以一般初始化时将SP的指针设在SRAM最高处。

  运用PUSH指令将数据推入仓库时指针减一;而子程序或中止回来地址推入仓库时指针将减二。

  运用POP指令将数据弹出仓库时,仓库指针加一;而用RET或RETI指令从子程序或中止回来时仓库指针加二。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/212713.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部