在前面的8051单片机教程中,我们已经看到了指令集和寻址模式。在本教程中,我们将看看8051微控制器特殊函数寄存器或SFRs。
如果你还记得8051单片机内存组织教程,8051微控制器的内部RAM或数据存储器分为通用寄存器,位寻址寄存器,寄存器库和特殊功能寄存器或SFR。
8051微控制器特殊功能寄存器用于编程和控制定时器,串口,I / O端口等不同的硬件外设等。实际上,通过操纵8051微控制器特殊功能寄存器(SFR),您可以评估或更改操作模式8051微控制器。
作为提醒,下面的图像显示了8051微控制器的内部RAM的基本结构。
8051单片机专用功能寄存器
8051单片机专用功能寄存器作为一个控制表,监视和控制8051单片机的操作。如果观察内部RAM结构,从80H到FFH的地址空间被分配给SFRs。
在这128个内存位置(80H到FFH)中,只有21个位置实际分配给SFRs。每个SFR都有一个字节地址和一个指定其用途的唯一名称。
由于SFRs是内部RAM结构的一部分,因此您可以像访问内部RAM一样访问SFRs。主要的区别是地址空间:前128字节(00H到7FH)用于常规的内部RAM,后128字节(80H到FFH)用于SFRs。
提示:由于可能的128个SFR内存位置中只有21个被分配,因此建议在编程期间不要访问剩余的寄存器或内存位置。
在进一步深入之前,先了解一下8051单片机的体系结构.
8051单片机专用功能寄存器列表
- A或ACC.
- B
- DPL
- 衰变时
- 即
- 知识产权
- P0.
- P1
- P2.
- P3.
- PCON
- PSW
- SCON
- SBUF
- SP
- TMOD
- TCON
- TL0
- TH0
- TL1
- TH1
8051单片机专用功能寄存器类别
所有21 8051单片机专用功能寄存器(SFRs)及其功能和内部RAM地址在下表中给出。
有很多方法可以对这21个特殊函数寄存器进行分类,但我认为下面的方法是最合适的。8051单片机的21个专用功能寄存器分为7类。它们是:
数学或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微控制器SFR。寄存器A位于SFR存储空间中的地址E0H。累加器用于保持几乎所有ALU操作的数据。
使用累加器的一些操作是:
- 加法、减法、乘法等算术运算。
- 逻辑操作等,或者,不等等
- 数据传输操作(8051和外部存储器之间)
“累加器”名称来自该寄存器用于累积(或存储)所有算术和大多数逻辑操作的结果。
B (B)登记
在乘法和除法操作中,B寄存器与ACC一起使用。这两个操作只对存储在寄存器A和B中的数据执行。在乘法操作中,一个操作数(乘数或被乘数)存储在B寄存器中,以及结果的较高字节。
在除法操作的情况下,B寄存器保存除数和结果的剩余部分。它还可以用作普通操作的通用寄存器,也经常被程序员用作存储临时结果的辅助寄存器。
寄存器B位于SFR地址空间的地址F0H。
程序状态字(PSW)
PSW或程序状态字寄存器也被称为标志寄存器,是重要的SFRs之一。PSW寄存器由标志位组成,它帮助程序员检查结果的条件并作出决定。
标志是一个1位的存储元素,用来存储和指示由某些指令的执行所产生的结果的性质。下图显示了PSW寄存器的内容。
下表描述了每个标志的功能。
指针寄存器
数据指针(DPTR - DPL和DPH)
数据指针是一个16位寄存器,物理上是DPL(数据指针低)和DPH(数据指针高)SFRs的组合。数据指针可以用作一个16位寄存器(DPTR)或两个8位寄存器(DPL和DPH)。
DPTR没有物理内存地址,但是DPL (DPTR的低字节)和DPH (DPTR的高字节)在SFR内存空间中有单独的地址。DPL = 82H, DPH = 83H。
DPTR寄存器被程序员用来寻址外部存储器(程序- ROM或数据- RAM)。
堆栈指针(SP)
SP或堆栈指针指向堆栈的顶部,它指示下一个要访问的数据。栈指针可以使用PUSH, POP, CALL和RET指令访问。堆栈指针是一个8位寄存器,在重置时,堆栈指针被初始化为07H。
在将新数据字节写入堆栈时,SP(堆栈指针)自动递增1,并在地址SP + 1上写入新数据。从堆栈读取数据时,从SP中的地址检索数据,之后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)。
如果一个端口位被SET(声明为1),相应的端口引脚将被配置为Input,类似地,如果一个端口位被清除(声明为0),相应的端口引脚被配置为Output。复位时,所有的端口位被设置(1),因此,所有的端口引脚被配置为输入。
外围控制寄存器
PCON(功率控制)
顾名思意,PCON或电源控制寄存器用于控制8051微控制器的电源模式,位于SFR存储空间的87H处。使用两个位在PCON寄存器,微控制器可以设置为空闲模式和下电模式。
注意:PCON寄存器不能位寻址。
在空闲模式,微控制器将停止时钟信号到ALU (CPU),但它是给其他外围设备,如定时器,串行,中断等。为了终止空闲模式,你必须使用中断或硬件复位。
在Power Down模式下,振荡器将停止,电源将减少到2V。要终止掉电模式,你必须使用硬件复位。
除了这两个,PCON寄存器也可用于少量额外的目的。PCON寄存器中的SMOD位用于控制串口的波特率。
在PCON寄存器中有两个通用标志位,程序员可以在执行过程中使用它们。
PCON寄存器中各位的作用如下表所示。
位 |
象征 | 描述 | 额外的信息 |
7 | SMOD | 串口通讯波特率修改位 | 如果是1,使用定时器1将波特率加倍。如果为0,则正常定时器1波特率。 |
6 - 4 |
- - - | - - - - - - | |
3. |
GF1 |
通用用户标志(位1) |
|
2 | GF0 | 通用用户标志(位0) | |
1 |
PD. | 关闭一些 | 如果要进入下电模式,设置为1 |
0 | IDL | 空闲模式位 | 要输入空闲模式,请设置为1 |
SCON(串行控制)
串行控制(SCON SFR)用于控制8051单片机的串口。它的地址是98H。通过SCON,可以控制串口的操作模式、波特率和串口数据收发。
SCON寄存器还包括当传输或接收数据字节时自动设置的位。
下表描述了SCON寄存器中每个位的功能。
位 |
象征 | 描述 |
7 | SM0 | 串口模式选择位0 |
6 |
SM1 | 串口模式选择位1 |
5 | SM2 | 多处理器通信。一些 |
4 |
任 | 收到使钻头 |
3. | TB8 | 传播一些8 |
2 |
RB8 | 收到8位 |
1 | “透明国际” | 传输中断标志 |
0 |
国际扶轮 | 接收中断标志 |
串行端口模式选择位(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运行控制位 | 如果要启用定时器/计数器,设置为1。清除以停止计时器。 |
5 |
TF0. | 定时器0溢出标志 | 当定时器0溢出时设置(所有1到0)。当处理器在000BH执行ISR时清除。 |
4 | TR0 | 定时器0运行控制位 | 如果要启用定时器/计数器,设置为1。清除以停止计时器。 |
3. |
IE1 | ext。中断1边旗 | 当收到INT1上的HIGH到LOW时设置(P3.3)。当处理器在0013H执行ISR时清除。 |
2 | IT1 | Ext.中断1类型控制位 | 如果1,中断1发生在下降沿上。如果0,中断1发生在低电平。 |
1 |
IE0 | 外接中断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 |
门 | OR门使能位 |
6 / 2 | C / TX. | 选择计时器或计数器模式 |
5/1 |
TxM1 | 定时器/计数器工作模式选择位1 |
4/0 | TxM0 | 定时器/计数器工作模式选择0位 |
Gatex位用于操作Timerx相对于INTx引脚或不管INTx引脚。
- GATE1 = 1 ==> Timer1只在TR1(在TCON)是SET和Signal在INT1是HIGH时才操作。
- GATE1 = 0 ==> Timer1操作不考虑信号INT1引脚,但TR1(在TCON)必须设置。
- GATE0 = 1 ==> Timer0只在TR0(在TCON)是SET和Signal在INT0是HIGH时才操作。
- GATE0 = 0 ==> Timer0操作不考虑信号INT0引脚,但TR0(在TCON)必须设置。
C/Tx位用于选择定时器计数的脉冲源。
- C / T1 = 1 ==> TIMER1计数来自引脚T1(P3.5)的脉冲(计数器模式)
- C / T1 = 0 ==> Timer1计数来自内部振荡器的脉冲(定时器模式)
- 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,x = 0;对于定时器1,x = 1。
IE(中断启用)
IE或中断启用寄存器用于启用或禁用单个中断。如果一个位是SET,相应的中断被启用,如果位被清除,中断被禁用。IE寄存器的Bit7(即EA位)用于启用或禁用所有中断。
IE寄存器中各位的作用如下表所示。
位 |
象征 | 描述 | 额外的信息 |
7 |
EA | 全局中断使能位。 | 如果设置为1,则可以启用单个中断。如果设置为0,则禁用所有中断。 |
6 | - - - - - - | - - - - - - |
|
5 |
ET2 | 预订的 | |
4 | 西文 | 串口中断使能位 | 如果设置为1,则启用串行端口中断。如果设置为0,则禁用串行端口中断。 |
3. |
ET1 | 定时器1溢出中断使能位 | 如果设置为1,则启用定时器1溢出中断。如果设置为0,定时器1溢出中断被禁用。 |
2 | ex1. | Ext. Interrupt 1使能位 | 如果设置为1,则启用Ext. Interrupt 1。如果设置为0,则禁用Ext. Interrupt 1。 |
1 |
ET0 | 定时器0溢出中断使能位 | 如果设置为1,则定时器0启用溢出中断。如果设置为0,则定时器0溢出中断被禁用。 |
0 | ex0. | ext。中断0启用位 | 如果设置为1,则启用Ext. Interrupt 0。如果设置为0,则Ext. Interrupt 0被禁用。 |
注意:中断启用(IE) SFR是位可寻址的。
IP(中断优先级)
IP或中断优先级寄存器用于将中断的优先级设置为High或Low。如果位被清除,相应的中断被分配低优先级,如果位被设置,中断被分配高优先级。
下表描述了IP寄存器中每个位的功能。
位 |
象征 | 描述 |
7 |
- - - - - - | - - - - - - |
6 | - - - - - - | - - - - - - |
5 |
PT2 | 预订的 |
4 | PS | 串口中断优先级 |
3. |
PT1 | 定时器1的优先级溢出中断 |
2 | PX1 | Ext. Interrupt 1的优先级 |
1 |
PT0 | 定时器0的优先级溢出中断 |
0 | PX0 | Ext. Interrupt 0的优先级 |
注意:中断优先级(IP)SFR为位可寻址。
外围数据寄存器
SBUF(串行数据缓冲区)
串行缓冲区或SBUF寄存器用于在传输或接收时保存串行数据。
TL0/TH0(定时器0 Low/High)
定时器0由TL0和TH0两个SFRs组成。TL0是较低的字节,TH0是较高的字节,它们一起形成一个16位的Timer0寄存器。
TL1/TH1(定时器1 Low/High)
TL1和TH1是定时器0的上下两个字节。
在本教程中,我们已经看到了8051微控制器特殊函数寄存器(SFRs),它们的地址,结构,重置值等。
6的反应
谢谢你简单的解释我很容易理解
每一个比特的用法说明可以帮助更深入的理解,请添加这些
非常感谢你让它变得可以理解。
很好地呈现内容......最适合修订基本概念。
很好,先生,真是个好主意
考试前先略读一下很好