0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【硬见小百科】单片机的特殊功能寄存器

云创硬见 2019-01-16 13:45 次阅读

单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

<特殊功能寄存器地址映象表(一)>

<特殊功能寄存器地址映象表(二)>

<特殊功能寄存器地址映象表(三)>

几个常用的SFR

1、ACC:累加器,常常用A表示。这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后我们将学到指令,能发现,所有的运算类指令都离不开它。

2、B:一个寄存器。在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW:程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们能了解CPU的当前状态,并作出对应的处理。它的各位功能请看下表。

PSW也称为标志寄存器,了解这个对于了解单片机原理非常的重要,存放各有关标志。其结构和定义如下:

sfr各位的用途

(1)CY:进位标志。用于表示Acc.7有否向更高位进位。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。

例:78H+97H(01111000+10010111)

(2)AC:辅助进位标志也叫半进位标志。 用于表示Acc.3有否向Acc.4进位

例:57H+3AH(01010111+00111010)

(3)F0:用户标志位,由我们(编程人员)决定什么时候用,什么时候不用。

(4)RS1、RS0:工作寄存器组选择位。这个我们已知了。
RS1、RS0 = 00 —— 0区(00H~07H)

RS1、RS0 = 01 —— 1区(08H~0FH)

RS1、RS0 = 10 —— 2区(10H~17H)

RS1、RS0 = 11 —— 3区(18H~1FH)

(5)0V:溢出标志位。 表示Acc在有符号数算术运算中的溢出,什么是溢出我们稍后再谈吧。

(6)P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,不然为0。

例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。

4、DPTR(DPH、DPL):数据指针,能用它来访问外部数据存储器中的任一单元,如果不用,也能作为通用寄存器来用,由我们自已决定如何使用。16位,由两个8位寄存器DPH、DPL组成。主要用于存放一个16位地址,作为访问外部存储器(外RAMROM)的地址指针。

5、P0、P1、P2、P3:这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。

6、SP:堆栈指针。(专用于指出堆栈顶部数据的地址。)

【学习建议】其实并不需要把上面的这些东西都死记硬背在脑子里面,这是很难的,我们只需要理解工作原理,一次看不懂就要多看几次,等到要写程序的时候,我们再把这些表格拿出来查阅。

以上所有信息仅作为学习交流使用,不作为任何学习和商业标准。若您对文中任何信息有异议,欢迎随时提出,谢谢!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5998

    文章

    43963

    浏览量

    620680
收藏 人收藏

    评论

    相关推荐

    C语言玩转单片机寄存器操作技巧

    由于寄存器中有时会有连续几个寄存器位用于控制某个功能,现假设我们需要把寄存器的某几个连续位清零,且其它位不变,代码如下。
    发表于 03-07 11:36 308次阅读

    sbit在单片机中的作用和用法

    sbit是单片机(Microcontroller)中的一个特殊功能寄存器位(Special Function Register Bit),用于控制特定IO引脚的输入输出方向及状态。本文将详细介绍
    的头像 发表于 12-20 09:35 5425次阅读

    能否使用通过编写代码检测单片机寄存器存在问题?

    如题,能否使用通过编写代码检测单片机寄存器存在问题????
    发表于 10-27 08:30

    可以修改单片机寄存器的默认值吗?

    可以修改单片机寄存器的默认值么
    发表于 10-23 07:20

    请问8051的21个特殊功能寄存器为什么要分散在128个字节内?

    8051的21个特殊功能寄存器为什么要分散在128个字节内?
    发表于 10-17 08:25

    51单片机的定时结构及工作原理详细说明

    由两个8位特殊功能寄存器TH0、TL0、TH1、TL1构成。工作方式寄存器TMOD:用于设置定时的工作模式和工作方式;控制寄存器TCON:
    发表于 09-25 08:23

    单片机的低功耗设计技术及注意问题

    内部电路可选择性工作 通过特殊功能寄存器选择使用不同的功能电路,即依靠软件选择其中不同的硬件;对于不使用的功能使其停止工
    的头像 发表于 08-29 16:28 788次阅读

    CM的特殊功能寄存器(2)#单片机

    单片机汇编语言函数
    未来加油dz
    发布于 :2023年08月02日 20:51:30

    CM的特殊功能寄存器(1)#单片机

    单片机汇编语言函数
    未来加油dz
    发布于 :2023年08月02日 20:50:47

    特殊功能寄存器(2)#单片机

    单片机存储
    未来加油dz
    发布于 :2023年07月31日 23:35:26

    特殊功能寄存器(1)#单片机

    单片机存储
    未来加油dz
    发布于 :2023年07月31日 23:35:02

    操作BASEPRI特殊功能寄存器时无效解决方法(下)

    站在中断优先级寄存器的高4位而言的,那么放到整个8位优先级寄存器来看的话,他们的优先级应该是0x00,0x20,0x30,0x40【其实,低4位值是多少无关紧要,反正无效位】。 前面提过了,现在BASEPRI寄存器也只用到高4位
    的头像 发表于 06-21 16:08 545次阅读
    操作BASEPRI<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>时无效解决方法(下)

    操作BASEPRI特殊功能寄存器时无效解决方法(上)

    有STM32用户发现在操作BASEPRI特殊功能寄存器时,根本不起作用。比方,它目前配置了几个中断,优先级各不相同,按照STM32CubeMx里的配置分别为2、3、4不等,当他在BASEPRI寄存器
    的头像 发表于 06-21 16:04 831次阅读
    操作BASEPRI<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>时无效解决方法(上)

    单片机寄存器编程与位运算

    这次一起来学习一下单片机开发时必备技术——位运算和寄存器编程。
    发表于 06-21 11:11 1013次阅读
    <b class='flag-5'>单片机</b>的<b class='flag-5'>寄存器</b>编程与位运算

    为何修改BASEPRI寄存器无效?

    有STM32用户发现在操作BASEPRI特殊功能寄存器时,根本不起作用。比方,它目前配置了几个中断,优先级各不相同,按照STM32CubeMx里的配置分别为2、3、4不等,当他在BASEPRI寄存器里写这几个数字中的任意一个时,
    的头像 发表于 04-26 09:16 1384次阅读
    为何修改BASEPRI<b class='flag-5'>寄存器</b>无效?