「硬见小百科」单片机的特殊功能寄存器
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(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位地址,作为访问外部存储器(外RAM和ROM)的地址指针。
5、P0、P1、P2、P3 :这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。
6、SP :堆栈指针。(专用于指出堆栈顶部数据的地址。)
【学习建议】其实并不需要把上面的这些东西都死记硬背在脑子里面,这是很难的,我们只需要理解工作原理,一次看不懂就要多看几次,等到要写程序的时候,我们再把这些表格拿出来查阅。
以上所有信息仅作为学习交流使用,不作为任何学习和商业标准。若您对文中任何信息有异议,欢迎随时提出,谢谢!
关于云创硬见
云创硬见是国内最具特色的电子工程师社区,融合了行业资讯、社群互动、培训学习、活动交流、设计与制造分包等服务,以开放式硬件创新技术交流和培训服务为核心,连接了超过30万工程师和产业链上下游企业,聚焦电子行业的科技创新,聚合最值得关注的产业链资源, 致力于为百万工程师和创新创业型企业打造一站式公共设计与制造服务平台。
MCS-51单片机有几个工作寄存器
工作寄存器有4组,每组都是8个工作寄存器R0~R7,通过PSW中的RS1、RS0两位来选择使用哪一组,如果不选,默认是选择第0组。
RS1RS0组合为00时,选中第0组工作寄存器,R0~R7地址为00H~07H;
RS1RS0组合为01时,选中第1组工作寄存器,R0~R7地址为08H~0FH;
RS1RS0组合为10时,选中第2组工作寄存器,R0~R7地址为10H~17H;
RS1RS0组合为11时,选中第3组工作寄存器,R0~R7地址为18H~1FH。
类似arm的usr模式svc模式irq模式fiq模式,
psw.4 psw.3
0 0 0区 r0-r7独立
0 1 1区 r0-r7独立
1 0 2区 r0-r7独立
1 2 3区 r0-r7独立
上边的每个区都由相同的名字r0-r7寄存器引用,但数据空间却不同,所以各自独立,
每组寄存器在物理上是独立的,也就是说,一共有32个寄存器。上电后默认是第0组,但四组寄存器的功能、优点完全相同。r0-r7支持丰富的寻址方式,可以大大提高运行效率。
所以,如果你有四个程序段(或者说线程)要交叉运行,都想使用到效率很高的r0-r7,就可以让它们各占一组,只要切换区域就行了,而不必频繁地保护现场。
寻址方式:
51单片机有7种寻址方式。
1、寄存器寻址:前面提到了内部RAM中的00H-1FH地址单元作为工作寄存器使用。一共是有32各地址单元,分成四组,每组有8个寄存器,命名为R0-R7,每次可以使用其中的一组。当使用R0-R7来表示操作数时,就属于寄存器寻址方式。
例如:MOV A,R0;把寄存器R0的内容送入累加器A中
2、直接寻址:在指令中直接给出操作数地址,就属于直接寻址方式。此时指令的操作数部分直接是操作数的地址。
例如:MOV A,2AH ;把RAM地址2AH的内容送入累加器A中
3、立即寻址:
例如:MOV A,#3AH ;该指令就是表示把立即数3AH送入累加器A中,立即数前加上一个#,和直接寻址方式区分
4、寄存器间接寻址:若以寄存器的名称直接给出操作数的地址,则称为寄存器间接寻址。
例如:MOV A,@R0 ;该指令是把RO里的内容作为地址,这个地址的数据送入累加器A,注意前面需要加@
5、变址寻址:变址寻址是以某个寄存器的内容为基本的地址,然后在这个基址上加以地址的偏移量,才是真正的操作数地址。
例如:MOV A,@A+DPTR ;地址是A+DPTR的值,这个地址的内容送如累加器A
6、相对寻址:相对转移指令需要用到相对寻址方式,此时操作数部分给出的是地址的相对偏移量部分。
目的地址 = 源地址 + 指令字节数 + rel(rel可正可负)
例如:SJMP rel
7、位寻址:概念就不做解释了。还是把reg52.h这个头文件贴出来说。
相关问答
单片机 程序状态字 psw 是什么意思-ZOL问答单片机程序状态字(ProgramStatusWord,PSW)是指单片机在执行过程中,用于存储当前程序执行状态的字节。它包含了当前指令地址、指令类型、操作数地址、取数寄...
PC=(), PSW =(),P0=().3.“-1”的补码为(_作业帮[最佳回答]1.MCS-51系列单片机为(8)位单片机.2.8051单片机有两种复位方式,既上电复位和手动复位.复位后SP=(07H),PC=(0000H),PSW=(00H),P0=(F...
单片机中的 P是什么?单片机中单独的P指的是奇偶标标志位,是程序状态字PSW中的最低位。P1口和P2口以及P3口都可以做普通的I/O使用!其中P3口具有第二功能:P3.0RXD(串行输入口)...
单片机 、简述程序状态字寄存器 PSW 各位的符合及意义?对进程/线程进行上下文切换关键的比较重要的寄存器:pc:程序计数器,记录下一条指令地址;ir:指令寄存器当前执行中的指令;gr:通用寄存器,比如系统堆栈...对...
单片机中 ac是什么意思?AC是程序状态字PSW的一个位,名字叫辅助进位位,用于指示两个数进行加法运算时低半字节相加是否产生进位。例如,25H+72H=97H,AC=0,因为5H+2H=7H,不产生低半字...
fo在 单片机中 是什么意思?答:51单片机f0的意思就是指是用户在进行编程使用的PSW中的D5位,作为表示状态改变的一个标志!当出现的中断或者子程序里面的某个状态改变时,就设置这个标志,然...
单片机中的 问题:MCS-51复位时,ACC、 PSW 、SP、P0~P3的值分别是多少?特殊:堆栈SP=07H;P0,P1,P2,P3,P4为0FFH;其他都为0;所以ACC=0;PSW=0;特殊:堆栈SP=07H;P0,P1,P2,P3,P4为0FFH;其他都为0;所以ACC=0;...
当 单片机PSW中的 RS1,RS0=10H,此时当前的工作寄存器区是第几...当单片机PSW中的RS1和RS0分别为1和0时,表示当前的工作寄存器区是第2组。因为RS1=1意味着选择第二组(4位地址),而RS0=0进一步确定了是低四位地址范围。所以你是...
单片机 问题:若A 中的 内容为67H,则P的标志位为……………怎么...[最佳回答]P标志位是程序状态寄存器PSW中的一个位,当A中的二进制数1的个数是奇数是,P=1,当1的个数是偶数时,P=0,因些,A=67H=01100111B,有5个1,是奇数,则P=1...
单片机 编程中R6,R7,R0,A是什么?答:楼上误解了,没看清题意,楼上说的那几个是PIC单片机的,楼主说的是51单片机的R6R7R0是51单片机中的工作寄存器组中的成员用于存放数据,这样的工作寄存器组...