STM8 CPU寄存器描述

发布者:温馨幸福最新更新时间:2016-08-08 来源: eefocus关键字:STM8  CPU  寄存器 手机看文章 扫描二维码
随时随地手机看文章
简介
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字节。

STM8  CPU寄存器描述 - Wornyong - 智能物联,嵌入您我!

 

 图(1)


堆栈指针(SP) 
堆栈指针是一个16位的寄存器,其内容为堆栈中下一个可自由分配的单元地址。根据不同的型号,堆栈指针的高位会有一个指定的预设值。 
堆栈一般用于在中断调用或子程序调用时存储 CPU的上下文(程序计数器,关键寄存器,相关函数的参数及局部变量,等等)。用户也可以通过POP和PUSH指令直接对堆栈操作。 
SP可以被C编译器的启动代码初始化,C语言应用程序会根据用户所使用的包含绝对地址信息的链接文件来进行初始化。如果用户使用了自己编写的链接文件和启动代码,请确认SP被恰当地初始化(具体地址信息请参考相应的数据手册)。在MCU复位后,或在执行了堆栈复位指令后(RSP),堆栈指针被设为其被允许的最大值。对于使用了汇编语言的应用程序,用户可使用ST提供的启动代码或编写自己的启动代码来对SP进行正确的初始化。
入栈操作使堆栈指针值减小,出栈操作使堆栈指针值增加。当堆栈指针值为其被允许的最小值时,继续入栈会使堆栈指针值回卷至其最大值,从而会导致先前存储的数据被覆盖,但此时没有中断或硬件标志位来指示该事件发生。应用程序需确保堆栈被正确的操作,没有溢出。
子程序调用会占用2或3字节空间。中断调用会占用9字节空间来存储内部寄存器(除SP之外)。请参考图2。 

STM8  CPU寄存器描述 - Wornyong - 智能物联,嵌入您我!

 

图(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等指令。

    STM8  CPU寄存器描述 - Wornyong - 智能物联,嵌入您我!

    表(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位进行置位,清除和取反。
    例子:加法操作

     

    STM8  CPU寄存器描述 - Wornyong - 智能物联,嵌入您我!

关键字:STM8  CPU  寄存器 引用地址:STM8 CPU寄存器描述

上一篇:STM8 存储FLASH、EEPROM、存储保护
下一篇:单片机达人解密:指令数据写哪了?

推荐阅读最新更新时间:2024-03-16 15:04

STM32寄存器操作简单介绍
STM32单片机可以使用库函数进行操作,再加上现在越来越强大的MDK ARM编译环境,使用库函数开发简直是不二的选择,但是工具越来越强大的同时意味着对编程人员降低了要求,在很大程度上降低了准入门槛,我们因此高兴吗?我倒是觉得这很像温水煮青蛙,所以库函数固然好用却也不应该抛弃最初的做法——寄存器操作。 先从启动文件开始介绍:这里介绍比较常见的一种启动方式(从内部的的FLASH启动,至于另外两个是否常用本人不甚了解),在启动代码了首先对栈和堆的大小进行定义,并在代码的起始处建立中断向量表,其第一个表项是栈顶(__initial_sp )地址,第二个表项是复位中断服务( Reset_Handler )入口地址。然后在复位中断服务程序中跳
[单片机]
STM32 SPI笔记(基于寄存器
1.说在前面:最近尝试操作VS1053音频模块 使用的数据传输方法使用SPI协议,打算学一下SPI的配置方式 2.SPI 2-1:SPI(Secial Periperal interface),作为四线的通信接口,有着MISO MOSI SCLK和CS MISO:主进从出 MOSI:主出从进 SCLK: 时间信号 CS:片选信号 2-2:CPHA和CPOL CPHA为时钟相位,可以配置为1/0,控制数据的采样方式,设置为0的时候,控制在时钟周期的第一个跳变沿进行数据采集,设置为1的时候在第二个跳变沿进行采集 CPOL为时钟极性,可以配置为1/0,控制空闲状态的时钟极性,设置为0的时候空闲状态为低
[单片机]
STM32 SPI笔记(基于<font color='red'>寄存器</font>)
STM8 HSI时钟修正寄存器
STM8 HSI时钟修正寄存器(CLK_HSITRIMR) 地址偏移值:0x0C 复位值:未定义 位7:4 保留。始终为0。 位3:0 HSITRIM :HSI修正值 由软件写入,用于微调HSI的校准值 注意:在大容量产品上,只有位2:0是可用的。 在中等容量或小容量产品上,位3:0或2:0是可用的,取决于选项字节的配置(参见数据手册)。
[单片机]
<font color='red'>STM8</font> HSI时钟修正<font color='red'>寄存器</font>
VHDL设计的消抖与滤波
  在同一块电路板上,由于信号线的走线过长而产生的高频毛刺我们可以通过在接近输入端串联一个100欧左右的电阻来滤除。但是对于板外信号,或者板内其他干扰造成较大的抖动时只好采用积分电路来滤波,即串一个电阻还要并一个电容接地。   同样在VHDL中我们可以采用类似的办法,对于小于触发器建立时间的毛刺可以用时钟打一下实现滤波。但对于开关或按键抖动等较大的干扰,我们可以采用延时比较法或积分法,或者二者并用。    比较法:这个方法很好理解,就是若干个时钟周期读取的数据相同时我们认为收到了一个稳定的数据,否则认为是过渡态。即采用若干位的移位寄存器,当寄存器是全'1'或全'0'时才开始读数。这种方法的缺点是,当干扰脉冲较宽时我们必须等比地
[应用]
AMD来势汹汹 英特尔服务器CPU祭出“价格”杀器了?
业内消息称,为应对来自AMD的冲击,英特尔正为其服务器CPU提供更具竞争力的价格,许多已开始使用基于AMD服务器的数据中心运营商已考虑转向英特尔。 据《电子时报》报道,今年3月,AMD发布了EPYC 3服务器处理器,并获得了亚马逊AWS、微软Azure、谷歌和阿里巴巴等客户的订单,同期英特尔发布了Whitley平台,配备了Ice Lake处理器。 Mercury Research的最新数据显示,AMD的服务器市场份额在2021年第一季度为8.9%,比去年同期增长了3.8个百分点,这是其自2006年第二季度以来的最大增长。 然而,由于载板供应紧张,自第一季度以来,AMD一直饱受服务器CPU短缺之苦。消息人士指出,尽管最近短缺情况有所
[手机便携]
STM8 用于系统启动的只读存储器
在某些STM8型号中有2K字节的内部BOOT ROM,其中包含有用于启动的代码。这段代码的主 要作用是利用STM8的SPI,CAN或UART接口,将应用程序代码,数据,选项字节(Option byte) 和中断向量表下载到内部的FLASH和EEPROM中去。 在复位以后,启动代码开始执行。更多详细内容请参考STM8 启动代码用户手册 (UM0560)。
[单片机]
CPU同样重要 小编教你读懂手机内存
     经常关注手机圈的朋友都会对智能手机有着自己的倾向,这也是根据不同需求而定的,人们在挑选手机时也会不自觉的主要关注自己感兴趣的点。像屏幕、处 理器、电池容量、摄像头都是大家所关注的,作为硬件配置中“百搭”般的存在,内存也是非常重要的。手机中的内存相当于PC上的内存+硬盘,运行内存就是 PC上的内存,内置存储就是硬盘了,其功能特性也是和PC大同小异。   简单来说,不论是运行内存还是内置存储,不出意外都是数值越大越好。当然了,如果仅仅是这样,那这篇文章也没有写的意义,直接比数字就好了。其实手机内存中还有很多门道,下面就听笔者给大家慢慢道来。   随着对智能手机的研究也来越深入,我们可以发现它的内部构成和PC是出奇的一致
[手机便携]
STM32/CPU地址映射的概念
1总线的由来 很多人对总线和地址映射的概念都是一头雾水,但是我们如果知道为何需要总线和地址映射,他们是在什么背景下被衍化出来的,自然而然对此概念就清清楚楚了。 我们知道CPU都是通过总线访问外设,例如STM32使用AMBA规范的总线和外设进行交互,那么在总线的概念没有被提出来的时候,外设是怎样被访问的呢? 其实在最早期还没有总线概念的时候,CPU设计者会直接把CPU内核和各种接口控制器设计到一起,如果要访问一个硬件,直接在内核里面对各种接口控制器进行操作,从而操作相应的硬件。我们看下图。 后来设计者发现如果每添加一个外设都要修改CPU内核,这样不具有很好的扩展性,为了使得外设的改变(增加、删除、修改)不影响CPU内核架
[单片机]
STM32/<font color='red'>CPU</font>地址映射的概念
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved