您的位置 首页 嵌入式

STM8 CPU寄存器描绘

简介STM8S是基于8位框架结构的微控制器,其CPU内核有6个内部寄存器,通过这些寄存器可高效地进行数据处理。STM8S的指令集支持80条基本2…

简介
STM8S是依据8位框架结构的微控制器,其CPU内核有6个内部寄存器,经过这些寄存器可高效 地进行数据处理。STM8S的指令集支撑80条根本 20种寻址形式,并且CPU的6个内部寄 存器都具有可寻址的地址。假如想了解悉数STM8S指令集,请参阅STM8 微控制器宗族编程手册 (PM0044)。 CPU寄存器

在图1所示的编程模型中能够看到6个CPU寄存器。在一个中止产生后,寄存器以图2所示次序入栈,它们以相反的次序出栈。假如需要的话,中止服务程序可运用POP和PUSH指令来对之进行操作。

CPU寄存器描绘

累加器(A)
累加器是一个8位通用意图寄存器,用于保存算术运算、逻辑运算以及数据操作的操作数及成果。
索引寄存器(X和Y)
X和Y都是16位的寄存器,可完成高效率的寻址形式。它们也可用作数据操作的暂存器以及用于像乘除法这样的操作。在大多数情况下,穿插汇编器会在运用了Y寄存器的指令代码中生成PRECODE指令,用以和运用了X寄存器的指令相差异。
程序计数器(PC)
程序计数器是一个24位的寄存器,用于存储CPU下一条要履行指令的地址。其内容在每一次指令操作后被主动改写。因为程序指针有24位,因而STM8的最大寻址规模可达16M字节。

图(1)

仓库指针(SP)
仓库指针是一个16位的寄存器,其内容为仓库中下一个可自在分配的单元地址。依据不同的类型,仓库指针的高位会有一个指定的预设值。
仓库一般用于在中止调用或子程序调用时存储 CPU的上下文(程序计数器,要害寄存器,相关函数的参数及局部变量,等等)。用户也能够经过POP和PUSH指令直接对仓库操作。
SP能够被C编译器的发动代码初始化,C言语应用程序会依据用户所运用的包括肯定地址信息的链接文件来进行初始化。假如用户运用了自己编写的链接文件和发动代码,请承认SP被恰当地初始化(具体地址信息请参阅相应的数据手册)。在MCU复位后,或在履行了仓库复位指令后(RSP),仓库指针被设为其被答应的最大值。关于运用了汇编言语的应用程序,用户可运用ST供给的发动代码或编写自己的发动代码来对SP进行正确的初始化。
入栈操作使仓库指针值减小,出栈操作使仓库指针值添加。当仓库指针值为其被答应的最小值时,持续入栈会使仓库指针值回卷至其最大值,从而会导致从前存储的数据被掩盖,但此刻没有中止或硬件标志位来指示该事情产生。应用程序需保证仓库被正确的操作,没有溢出。
子程序调用会占用2或3字节空间。中止调用会占用9字节空间来存储内部寄存器(除SP之外)。请参阅图2。

图(2)

*注:WFI/HLAT指令会预先保存CPU上下文。假如CPU处于WFI或HALT状况下有中止产生,则进入中止所需的延时会相应削减。

  • 条件代码寄存器(CC)
    条件代码寄存器是一个8位寄存器,用于指示刚刚被履行的指令成果及处理器的状况。寄存器的第7位(MSB)是保存位,这些位能够被用户的程序或代码单独地测验,测验的成果可用于指示程序或代码履行后的状况 。下面的阶段将描绘每一位的含义。
    • V:溢出
      在上一次有符号数的算术操作中,假如成果的最高位有溢出产生,则当该位被置1。请参阅INC,INCW,DEC,DECW,NE

      G,NEGW,ADD,ADDW,ADC,SUB,SUBW,SBC,CP,CPW等指令。

    表(1)

    I1:中止屏蔽等级1
    I1和I0一起用于指示当时状况下CPU的可中止性,请参阅表1。经过履行RIM,SIM,HALT,WFI,IRET,TRAP和POP指令可对I1和I0置位或清零。I1和I0也会在CPU进入中止服务程序时被硬件主动设置为该中止对应的中止等级。

  • H:半进位
    在履行ADD或ADC操作的过程中,当ALU的第3位和第4位间产生进位时,H位会被置1,这关于
    BCD码算术运算很有含义。
  • I0:中止屏蔽等级0
    请参阅表1。
  • N:负数
    当上一次的算术、逻辑或数据操作的成果是负的情况下,N位被置1(例如成果的最高位是逻辑1)。
  • Z:零
    当上一次的算术、逻辑或数据操作的成果是零时,Z位被置1。
  • C:进位
    在上一次的算术操作中,假如成果的最高位产生进位或借位,则当该位被置1。当履行位测验,分支,移位,旋转和加载指令时,该位也会收到影响。请参阅ADD,ADC,SUB, SBC等指令。
    在除法操作中,C位用来指示在指令履行中是否有过错产生(商溢出或0作除数)。请参阅DIV指令。
    在位测验操作中,被测验的位被复制到C位;请参阅BTJF,BTJT指令。在移位和旋转操作中,C位依据成果进行相应地更新;请参阅RRC,RLC,SRL,SLL,SRA指令。
    用户还能够经过SCF,RCF,CCF指令对C位进行置位,铲除和取反。
    比如:加法操作

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部