在以前的8051微控制器教程中,我们已经看到了指令集和寻址模式。在本教程中,我们将看看8051微控制器特殊功能寄存器或SFRS。
如果你记得的话8051单片机存储器组织教程中,8051微控制器的内部RAM或数据存储器分为通用寄存器,位寻址寄存器,寄存器银行和特殊功能寄存器或SFRs。
8051微控制器特殊功能寄存器用于编程和控制定时器,串口,I / O端口等不同的硬件外设等。实际上,通过操纵8051微控制器特殊功能寄存器(SFR),您可以评估或更改操作模式8051微控制器。
作为提醒,以下图像显示了8051微控制器内部RAM的基本结构。
8051微控制器特殊功能寄存器(SFRS)
8051微控制器特殊功能寄存器充当控制表,监控和控制8051微控制器的操作。如果您在内部RAM结构中观察到,则将80h到FFH的地址空间分配给SFRS。
在这128个内存位置(80h至FFH)中,只有21个位置实际分配给SFR。每个SFR都有一个字节地址,也是一个唯一的名称,它指定其目的。
由于SFRs是内部RAM结构的一部分,您可以像访问内部RAM一样访问SFRs。主要的区别是地址空间:前128字节(00H到7FH)是用于常规内部RAM,后128字节(80H到FFH)是用于SFRs。
小费:由于分配了可能的128个SFR存储器位置中的21个,建议在编程期间不访问其余寄存器或存储器位置。
在进一步进一步之前,请了解8051微控制器架构。
列出8051微控制器特殊功能寄存器
- 或ACC
- B.
- DPL.
- DPH.
- 即
- 知识产权
- P0
- P1
- P2
- P3
- PCON.
- PSW
- sc
- SBUF
- SP.
- TMOD.
- TCON
- TL0
- Th0.
- TL1
- TH1
8051微控制器特殊功能寄存器类别
所有21 8051微控制器特殊功能寄存器(SFR)以及其功能和内部RAM地址在下表中给出。
有很多方法可以对这21个特殊功能寄存器进行分类,但我找到了以下方式作为合适的方式。8051微控制器的21个特殊功能寄存器分为七组。他们是:
数学或CPU寄存器:A和B
状态寄存器:PSW(程序状态字)
指针寄存器:DPTR(数据指针- DPL, DPH)和SP(堆栈指针)
I / O端口锁存器:P0(端口0),P1(端口1),P2(端口2)和P3(端口3)
外围控制寄存器:PCON, SCON, TCON, TMOD, IE和IP
外围数据寄存器:TL0, TH0, TL1, TH1和SBUF
CPU或数学寄存器
A或蓄电池(ACC)
蓄能器或寄存器A是最重要和最常用的8051单片机SFRs。寄存器A位于SFR内存空间中的地址E0H。累加器用于保存几乎所有ALU操作的数据。
蓄电池的一些操作是:
- 算术运算,如添加,减法,乘法等。
- 逻辑运算,如AND, OR, NOT等。
- 数据传输操作(8051和外部存储器之间)
“累加器”这个名字来自这样一个事实:这个寄存器用于累加(或存储)所有算术运算和大多数逻辑运算的结果。
B (B)登记
B寄存器与ACC一起用于乘法和除法运算。这两个操作是对仅存储在寄存器A和B中的数据执行的。在乘法运算中,一个操作数(乘数或乘数)存储在B寄存器中,同时也是结果的较高字节。
在划分操作的情况下,B寄存器持有除数以及结果的其余部分。它也可以用作正常操作的通用寄存器,并且通常用作程序员用作辅助寄存器来存储临时结果。
寄存器B位于SFR地址空间的地址F0H。
程序状态字(PSW)
PSW或程序状态字寄存器也称为标志寄存器,并且是重要的SFR之一。PSW寄存器由标志位组成,该标志位有助于程序员检查结果的条件并进行决策。
标志是1位存储元素,其存储并指示通过执行某些指令生成的结果的性质。以下图像显示了PSW寄存器的内容。
下表描述了每个标志的功能。
指针寄存器
数据指针(DPTR - DPL和DPH)
数据指针是16位寄存器,并且物理地是DPL(数据指针低)和DPH(数据指针高)SFR的组合。数据指针可以用作单个16位寄存器(作为DPTR)或两个8位寄存器(作为DPL和DPH)。
DPTR没有物理内存地址,但是DPL (DPTR的低字节)和DPH (DPTR的高字节)在SFR内存空间中有单独的地址。DPL = 82H, DPH = 83H。
DPTR寄存器由程序员寻址外部存储器(程序 - ROM或DATA - RAM)使用。
堆栈指针(SP)
SP或Stack指针指向堆栈的顶部,它表示要访问的下一个数据。堆栈指针可以使用PUSH,POP,CALL和RET说明进行访问。堆栈指针是一个8位寄存器,并且在复位后,堆栈指针用07h初始化。
当向堆栈中写入一个新的数据字节时,SP(堆栈指针)自动加1,新数据写入地址为SP+1。当从堆栈读取数据时,从SP中的Address检索数据,然后SP减1 (SP-1)。
I / O端口寄存器(P0,P1,P2和P3)
8051单片机有四个端口,可以作为输入和/或输出。这四个端口分别为P0、P1、P2、P3。每个端口都有一个名称相同的寄存器(即P0、P1、P2和P3)。端口寄存器地址如下:P0—80H、P1—90H、P2—A0H、P2—B0H。
这些SFRs中的每个位对应8051微控制器中的一个物理引脚。所有这些端口寄存器都是位可寻址和字节可寻址。在端口寄存器位上写入1或0将反映为相应引脚上的适当电压(5V和0V)。
如果端口位被设置(声明为1),对应的端口引脚将被配置为输入,同样如果端口位被清除(声明为0),对应的端口引脚将被配置为输出。在重置时,所有端口位被设置(1),因此,所有端口引脚被配置为输入。
外围控制寄存器
PCON(功率控制)
PCON或电源控制寄存器,因为名称建议用于控制8051微控制器的电源模式,位于SFR存储空间的87小时。在PCON寄存器中使用两个位,可以将微控制器设置为空闲模式和断电模式。
注意:PCON寄存器不是位寻址。
在空闲模式期间,微控制器将使时钟信号停止到ALU(CPU),但它被给予定时器,串行,中断等的其他外设。为了终止空闲模式,您必须使用中断或硬件复位。
在断电模式下,振荡器将停止,电源将减少到2V。要终止断电模式,必须使用硬件重置。
除了这两个之外,PCON寄存器还可以用于少数其他用途。PCON寄存器中的SMOD Bit用于控制串口的波特率。
在PCON寄存器中有两个通用的标志位,程序员可以在执行过程中使用它们。
下表描述了PCON寄存器中每个位的功能。
位 |
象征 | 描述 | 额外的信息 |
7. | sm | 串口通信波特率修改位 | 如果为1,则使用Timer 1使波特率加倍。若为0,表示正常定时器1的波特率。 |
6 - 4 |
- - - | - | |
3. |
GF1. |
通用用户标志(第1位) |
|
2 | GF0. | 通用用户标志(位0) | |
1 |
PD | 击中钻头 | 要输入电源,请设置为1 |
0. | IDL | 空闲模式位 | 设置为1,进入Idle Down模式 |
SCON(串行控制)
串行控制或SCON SFR用于控制8051微控制器的串行端口。它位于98h的地址。使用SCON,可以控制串口的串口的操作模式,串口的波特率,并使用串行端口发送或接收数据。
SCON寄存器还包括在发送或接收数据字节时自动设置的位。
下表描述了SCON寄存器中每一位的功能。
位 |
象征 | 描述 |
7. | SM0 | 串口模式选择位0 |
6. |
SM1 | 串口模式选择位 |
5. | SM2 | 多处理器通信。一些 |
4. |
仁 | 接收启用位 |
3. | TB8 | 传输位8. |
2 |
RB8. | 收到的第8位 |
1 | TI. | 传输中断标志 |
0. |
ri. | 接收中断标志 |
串口模式选择位(SM0和SM1)决定了UART的模式和波特率。下表给出了如何使用串口模式选择位配置8051的串口(UART)的概述。
串口模式选择位
SM0 |
SM1 | 模式 | 描述 | 波特率 |
0. | 0. | 0. | 8位同步移位寄存器模式 | 固定波特率 (振荡器频率/ 12) |
0. |
1 | 1 | 8位标准UART 模式 |
可变波特率(可通过定时器1设置) |
1 | 0. | 2 | 9位多处理器通信模式 | 固定波特率 (振荡器频率/ 32或振荡器频率/ 64 |
1 |
1 | 3. | 9位多处理器通信模式 | 可变波特率(可通过定时器1设置) |
TCON(定时器控制)
定时器控制或TCON寄存器用于启动或停止8051单片机的定时器。它还包含指示计时器是否溢出的位。TCON SFR也由中断相关位组成。
下表提供了TCON SFR中的每个位的描述。
位 |
象征 | 描述 | 额外的信息 |
7. |
TF1 | 定时器1溢出标志 | 计时器1溢出(全部1s至0)设置。当处理器在001BH处执行ISR时清除。 |
6. | TR1 | 定时器1运行控制位 | 若要启用Timer/Counter,设置为1。允许停止计时器。 |
5. |
TF0 | 定时器0溢出标志 | 定时器0溢出(全部1s至0)设置。当处理器在000BH执行ISR时清除。 |
4. | TR0. | 定时器0运行控制位 | 若要启用Timer/Counter,设置为1。允许停止计时器。 |
3. |
IE1 | Ext.中断1边缘标志 | 在INT1(P3.3)上收到高到低电平的设置。当处理器在0013h执行ISR时清除。 |
2 | IT1 | Ext.中断1类型控制位 | 如果1,中断1发生在下降沿上。如果0,中断1发生在低级别。 |
1 |
IE0 | ext。中断0边缘标志 | 当INT0 (P3.2)上接收到HIGH到LOW时设置为1。当处理器在0003H执行ISR时清除。 |
0. | IT0. | ext。中断0类型控制位 | 如果1,则在下降沿发生中断0。如果0,则中断0发生在低电平上。 |
TMOD(定时器模式)
TMOD或定时器模式寄存器或SFR用于设置定时器T0和T1的操作模式。较低的四个位用于配置Timer0,并且越高的四个位用于配置Timer1。
下表给出了TMOD SFR中每个位的简要描述。
位 |
象征 | 描述 |
7/3 |
门 | 或门启用位 |
6 / 2 | C / Tx | 选择计时器或计数器模式 |
5/1 |
TxM1 | 定时器/计数器操作模式选择位1 |
4/0 | TxM0 | 定时器/计数器操作模式选择位0 |
Gatex位用于相对于INTX引脚操作TIMERX,或者无论INTX引脚如何。
- 只有在设置TR1(在TCON中)并且INT1上的信号很高时,才操作GATE1 = 1 ==> TIMER1。
- 门1 = 0 ==> Timer1无论INT1引脚上的信号如何,都必须设置TR1(在TCON中)。
- 只有在设置TR0(在TCON中)并且INT0上的信号很高时,才操作GATE0 = 1 ==> TIMER0。
- Gate0 = 0 ==> Timer0无论INT0引脚上的信号如何,都必须设置TR0(在TCON中)。
使用C / TX位选择计时器计数的脉冲源。
- Timer1计数从引脚T1 (P3.5)(计数器模式)发出的脉冲
- C/T1 = 0 ==>定时器计数脉冲从内部振荡器(定时器模式)
- C / T0 = 1 ==> Timer0计数来自引脚T0(P3.4)的脉冲(计数器模式)
- C / T0 = 0 ==> Timer0计数来自内部振荡器的脉冲(定时器模式)
TxM0 |
TxM1 | 模式 | 描述 |
0. |
0. | 0. | 13位定时器模式(THx - 8位和TLx - 5位) |
0. |
1 | 1 | 16位定时器模式 |
1 | 0. | 2 | 8位自动重新加载定时器模式 |
1 | 1 | 3. | 两个8位定时器模式或分裂定时器模式 |
注意:对于定时器0和计时器1的X = 0 x = 0。
IE(中断启用)
IE或中断使能寄存器用于启用或禁用单个中断。如果设置有点,则启用相应的中断,如果该位清除,则禁用中断。IE寄存器的位7,即EA位用于启用或禁用所有中断。
下表描述了IE寄存器中的每个位的功能。
位 |
象征 | 描述 | 额外的信息 |
7. |
EA | 全局中断使能位。 | 如果设置为1,则可以启用单个中断。如果设置为0,则禁用所有中断。 |
6. | - | - |
|
5. |
ET2. | 保留 | |
4. | 西文 | 串口中断使能位 | 如果设置为1,表示开启“串口中断”。如果设置为0,表示禁用“串口中断”。 |
3. |
ET1. | 定时器1溢出中断使能位 | 如果设置为1,则启用计时器1溢出中断。如果设置为0,则禁用定时器1溢出中断。 |
2 | 例1 | Ext.中断1使能位 | 如果设置为1,则。中断1已启用。如果设置为0,则。中断1被禁用。 |
1 |
ET0. | 定时器0溢出中断使能位 | 如果设置为1,定时器0启用溢出中断。如果设置为0,Timer 0溢出中断将被禁用。 |
0. | EX0 | Ext.中断0使能位 | 如果设置为1,则。中断0已启用。如果设置为0,则。中断0已禁用。 |
注意:中断使能(IE) SFR是位可寻址的。
IP(中断优先级)
IP或中断优先级寄存器用于设置中断的优先级,高或低。如果清除一点,则相应的中断被分配低优先级,并且如果设置该位,则会分配高优先级的中断。
下表描述了IP寄存器中每一位的功能。
位 |
象征 | 描述 |
7. |
- | - |
6. | - | - |
5. |
PT2 | 保留 |
4. | PS. | 串口中断的优先级 |
3. |
PT1 | 定时器1溢出中断优先级 |
2 | PX1 | 分机中断1的优先级 |
1 |
PT0 | 定时器0溢出中断的优先级 |
0. | PX0 | 分机中断0的优先级 |
注意:中断优先级(IP) SFR是位可寻址。
外围数据寄存器
SBUF(串行数据缓冲区)
串行缓冲区或SBUF寄存器用于在传输或接收时保持串行数据。
TL0/TH0(定时器0低/高)
定时器0由两个SFRS:TL0和TH组成。TL0是较低字节,TH0是更高的字节和一起形成16位TIMER0寄存器。
TL1 / TH1(计时器1低/高)
TL1和TH1是Timer 0的高字节和低字节。
在本教程中,我们已经看到了8051微控制器特殊功能寄存器(SFR),他们的地址,结构,复位值等。
6的反应
谢谢你简单的解释,我很容易理解
每个比特的使用说明可以有助于了解更深,请添加那些
非常感谢你让它可以理解。
很好地展示内容……对基本概念的修正最好。
好的爵士真的是一个很好的概念
考试前略读是很好的