所以你可能从名字本身就猜到了一些东西——”特殊功能寄存器的缩写SFR.Well, your guess is right Okay! Lets come to the point. There是21个特殊函数寄存器(SFR)其中包括寄存器A、寄存器B、处理器状态字(PSW)、PCON等。这21个特殊函数寄存器有21个独特的位置,每个寄存器的大小为1字节。一些特殊的函数寄存器是位可寻址(这意味着您可以访问单个字节内的8个独立位),而其他一些位是仅字节可寻址.让我们详细地看看它们。

注册/蓄电池

所有特殊函数寄存器中最重要的,这是第一个注释蓄电池也被称为ACC一个。累加器(有时也称为寄存器A)保存大多数算术和逻辑运算的结果。ACC通常通过直接寻址访问,其物理地址为E0H。蓄电池是字节和位均可寻址。你可以从下图中理解这一点。要访问第一个位(即0位)或作为单个字节访问累加器(一次所有8位),您可以使用相同的物理地址E0H。现在,如果你想访问第二个位(即位1),你可以使用E1H和第三位E2H等等。

8051年累加器

寄存器B

该寄存器的主要用途是执行乘法和除法。8051微控制器有一条乘法指令(MUL)和司(DIV). 如果您熟悉8085,您现在可能知道乘法是重复加法,而as除法是重复减法。在编程8085时,您可能编写了一个循环来执行重复的加法/减法以执行乘法和除法。现在在8051中,你可以用一条指令来完成这项工作。

例:MUL A,B—执行此指令时,A内的数据与B内的数据相乘,答案存储在A中。

注意:对于MUL和DIV指令,两个操作数必须位于A和B中。

注意:如果你有兴趣了解,请点击这个链接微处理器和微控制器的区别

寄存器B也是字节可寻址和位可寻址的。要访问位o或访问所有8位(作为单个字节),使用物理地址F0。要访问位1,可以使用F1等。请看下面的图片。

8051寄存器B

注意:寄存器B也可用于其他通用操作。

端口寄存器

您可能已经知道,8051有4个端口。如果您不熟悉8051的架构,请阅读以下文章:-8051的体系结构

因此,4个名为P0, P1, P2, P3的输入/输出端口有四个对应的端口寄存器,它们的名称相同:P0, P1, P2, P3。数据必须首先写入端口寄存器,然后通过端口发送到任何其他外部设备。类似地,任何通过端口接收的数据都必须从端口寄存器中读取,以便执行任何操作。所有4端口寄存器都是位以及字节可寻址的。为了更好地理解端口寄存器,请看下图。

8051端口寄存器

从图:-

  • 端口0的物理地址为80
  • 端口1的物理地址是90
  • 端口2的压强是A0
  • 端口3的值为B0

堆栈指针

stack pointer(堆栈指针)以缩写SP而广为人知,它表示指向系统堆栈的指针。堆栈指针是一个8位寄存器,SP的直接地址是81H,并且它只有字节可寻址,这意味着您无法访问堆栈指针的各个位。堆栈指针的内容指向系统堆栈的最后存储位置。要在系统堆栈中存储新内容,必须先将SP增加1,然后执行“store”命令。通常在系统复位后,SP初始化为07H,数据可从08H起存储到堆栈中。这通常是默认情况,程序员可以根据自己的需要更改SP的值。

电源管理寄存器(PCON)

使用微控制器进行电源管理是你每天在手机上看到的事情。难道你没有注意到,当手机在几秒钟或几分钟内不使用时,会自动进入待机模式,并对此感到惊讶吗?这是通过手机内部控制器的电源管理功能实现的。

顾名思义,该寄存器用于8051微控制器的高效电源管理。通常被称为PCON寄存器,这是单独用于电源管理的专用SFR。从下图中你可以看到这个寄存器有两种模式:-空闲模式和断电模式。

电源管理寄存器-8051

设置位0将微控制器移动到空闲模式,设置位1将微控制器移动到断电模式。

处理器状态字(PSW)

通常称为PSW寄存器,这是微控制器功能中至关重要的SFR。此寄存器反映处理器中正在执行的操作的状态。下图显示了PSW寄存器以及使用PSW寄存器位RS1和RS0选择寄存器组的方式。PSW寄存器可位和字节寻址。PSW的物理地址从D0H开始。然后使用D1、D2…D7访问各个位。下面解释各种独立位。

8051 PSW寄存器

位号

一些符号

直接地址

的名字

函数

0 P D0 奇偶校验 如果在一个操作后ACC有奇数个1,这个位将被设置。如果没有,比特将保持清除。
1 - - - - - - D1 用户可定义的位
2 机汇 D2 溢流 如果一个算术运算从第6位进位而不是从第7位进位,则设置OV标志。如果Acc从第7位进位(而不是从第6位进位),它也会被设置
3. RS0 D3 寄存器银行选择位0 寄存器银行选择位的LSB。请看表下的解释。
4 卢比 D4 寄存器银行选择位1 寄存器银行的MSB选择位。
5 F0 D5 标志0 用户定义的标记
6 交流 D6 辅助进位 如果在算术运算期间数据从Acc的第3位到第4位输出,则设置该位。
7 CY D7 携带 如果数据在算术运算期间从Acc的第7位输出,则设置。

有时寄存器的值可以从R0,R1…到R7。您可能已经知道有32个这样的寄存器。那么如何用8个变量来访问32个寄存器呢?现在开始使用注册银行了。有4个寄存器库,分别为0、1、2和3。每家银行有8个从R0到R7的寄存器。一次只能选择一个登记银行。通过PSW寄存器位PSW.3和PSW.4,即RS0和RS1,可以选择寄存器组。这两个位被称为登记银行选择位,因为它们被用来选择登记银行。图片将更多地讨论选择注册银行。

到目前为止,我们已经讨论了8051中的所有主要SFR。还有很多其他人还在等着呢!请记住有21个SFR,我们只讨论了9个。下表列出了所有其他12个SFR。

SFR

地址

函数

DPH 83 数据指针寄存器(高)。只能进行字节寻址。
DPL 82 数据指针寄存器(低)。只能进行字节寻址。
知识产权 B8 中断优先级。位寻址和字节寻址都是可能的。
A8 中断使。位寻址和字节寻址都可能。
SBUF 99 串行输入/输出缓冲区。只有字节寻址是可能的。
SCON 98 串行通信控制。位寻址和字节寻址都是可能的。
TCON 88 定时器控制。位寻址和字节寻址都可能。
TH0 8C 计时器0计数器(高)。只有字节寻址是可能的。
TL0 8A 计时器0计数器(低)。只有字节寻址是可能的。
TH1 8D 定时器1计数器(高)。只有字节寻址是可能的。
TL1 8B 定时器1计数器(低)。只有字节寻址是可能的。
TMOD 89 定时器模式选择。只有字节寻址是可能的。
作者

4评论

  1. 阿德约翰S

    我真的很感谢你的解释。请给我更多关于计时器、计数器和代码的解释。

  2. 罗西尼

    很好的解释

  3. 电子产品项目

    关于8051微控制器特殊功能寄存器的奇妙解释。这对使用微控制器的初学者来说非常有用。他们会有一个好主意。

  4. 贾斯汀c达斯

    长官,堆栈内存在哪里?

Baidu