51单片机寄存器详解

51子系统单片机的存储器配置
1、程序存储器 ROM
1、程序存储器的ROM的最大空间是64KB,因为地址线是16根,2^16 = 64 KB。80C51单片机,其内部有4KB ROM,外部ROM的最大容量是60KB;

2、80C51片内4 KB ROM 的地址为:0000H~0FFFH (2^12 = 4 KB),片外60 KB ROM的地址为:1000H~FFFFH(2^16 - 2^12 = 60 KB);

3、80C51单片机,正常运行时:EA(非)端接高电平,CPU从内部ROM中读取程序;当PC值超过内部ROM,才会转向外部ROM;

4、片内ROM的保留单元:

保留单元地址    入口地址    用途
0000H~0002H    0000H    复位后初始化引导程序
0003H~000AH    0003H    外部中断0中断服务程序
000BH~0012H    000BH    定时/计数器0中断服务程序
0013H~001AH    0013H    外部中断1中断服务程序
001BH~0022H    001BH    定时/计数器1中断服务程序
0023H~002AH    0023H    串行口中断服务程序
002BH~0032H    002BH    定时/计数器2中断服务程序
————————————————

 


2、数据存储器 RAM
1、数据存储器用于存放运算的中间结果、暂存和缓冲数据及标志位等;

2、51系列单片机内部RAM有256B,地址为:00H~0FFH(2^8 = 256 B);可拓展的外部RAM最大空间为64KB,地址为:0000H~0FFFFH(2^16 = 64 KB);

3、片内256B的RAM又分为:低128单元(00H~7FH)(2^7 = 128 B)RAM区;高128单元(80H~0FFH)(2^8 - 2^7 = 128B)的特殊功能寄存器区(SFR区);

4、低128单元分为:①通用寄存器区(00H~1FH)(2^5 = 32 B):从第0组到第3组,共计有4组通用寄存器区;②位寻址区(20H~2FH)(16B = 128位);③用户RAM区(30H~7FH)(4FH = 80B);

5、通用寄存器区/工作寄存器区:常用于存放操作数及中间结果。32个寄存器分为4组,每组8个,每个寄存器都是8位,每组都以R0~R7作为寄存器单元编号。

寄存器名称    地址            
第0组    第1组    第2组    第3组
R0    00H    08H    10H    18H
R1    01H    09H    11H    19H
R2    02H    0AH    12H    1AH
R3    03H    0BH    13H    1BH
R4    04H    0CH    14H    1CH
R5    05H    0DH    15H    1DH
R6    06H    0EH    16H    1EH
R7    07H    0FH    17H    1FH

6、第0组寄存器被默认为通用寄存器组,其他需要设置PSW中的RS1、RS0两位,没被选中的寄存器可作为一般的数据缓冲器使用。

RS1    RS0    组号
1    1    3
1    0    2
0    1    1
0    0    0


7、位寻址区16个字节**(16B = 128位)**中的每一位都有一个特定的位地址

8、用户RAM区(30H~7FH)(80个单元),这些单元可以用作:数据缓冲器使用,也可作为堆栈以保存子程序调用或响应中断时的断点和现场。

9、特殊功能寄存器区(SFR区)(字节地址能被8和0整除)

符号    名称    字节地址    D7    D6    D5    D4    D3    D2    D1    D0
TCON    定时/计数器状态字    88H    TF1    TR1    TF0    TR0    IE1    IT1    IE0    IT0
8FH    8EH    8DH    8CH    8BH    8AH    89H    88H
TMOD    定时/计数器方式控制字    89H    GATE    C/T    M1    M0    GATE    C/T    M1    M0
SCON    串口控制寄存器    98H    SM0    SM1    SM2    REN    TB8    RB8    T1    R1
9FH    9EH    9DH    9CH    9BH    9AH    99H    98H
IE    中断允许控制寄存器    A8H    EA    -    -    ES    ET1    EX1    ET0    EX0
AFH    AEH    ADH    ACH    ABH    AAH    A9H    A8H
IP    中断优先级控制寄存器    B8H    -    -    -    PS    PT1    PX1    PT0    PX0
BFH    BEH    BDH    BCH    BBH    BAH    B9H    B8H
PSW    程序状态字    D0H    CY    AC    F0    RS1    RS0    OV    -    P
D7H    D6H    D5H    D4H    D3H    D2H    D1H    D0H


(1)累加器(A/ACC);

(2)B寄存器:主要与累加器配合完成乘法和除法运算;

(3)程序状态字(PSW):8位的寄存器,用于存放程序运行的状态信息及运算结果的标志

PSW    程序状态字    CY    AC    F0    RS1    RS0    OV    -    P
​ ①CY:进位标志位,最高位有进位或借位时,CY置1;无进位或错位时,CY清0;

​ ②AC:辅助进位标志位,低4位向高4位有进位或借位时,CY置1;无进位或错位时,CY清0;

​ ③F0:用户标志位

​ ④RS1和RS0:通用寄存器组选择位

​ ⑤OV:溢出标志位,溢出OV置1,没溢出OV清0

​ ⑥P:奇偶校验位,如果A中有奇数个“1”,则P为1;否则P为0;

(4)数据指针(DPTR):唯一一个可寻址的16位寄存器。在访问外部RAM时,DPTR作为地址指针使用;

(5)堆栈指针(SP):堆栈的操作方式有两种:

​ ①自动方式:在调用子程序或者产生中断时,CPU自动将断点压入堆栈;程序返回时,断点自动弹回给PC指针;

​ ②指令方式:入栈指令PUSH,出栈指令POP;

PS:SP的复位值为07H,堆栈数据从08H开始存放,这样会导致通用寄存器无法使用,所以程序一开始就需要将SP设置为30H,这样堆栈就会开辟在用户RAM区(30H~7FH)。

(6)程序计数器(PC):PC是一个16位计数器,专门用于存放CPU将要执行的指令地址(即下一条指令的地址)。

I/O口
1、51单片机用4个8位并行I/O口(P0~P3)和一个串行I/O口。并行I/O口一次可传送8位二进制数据,串行I/O一次仅能传送1位二进制数据。

2、P0口:
第一功能:准双向三态I/O口

特别注意:P0作为输入口时,必须先向锁存器写入高电平,使输出驱动电路中的T1截止,P0口处于高阻态,具有高阻抗输入特性。

第二功能:CPU在访问存储器时,可以作为地址/数据分时复用的端口,地址单向输出,数据双向传输。

PS:拓展外部RAM或者ROM时,P0口只能作为第二功能,输出低八位地址。

3、P1口:
第一功能:准双向I/O口

特别注意:P1作为输入口时,必须先向锁存器写入高电平,使输出驱动电路中的T截止。

第二功能:①P1.0:定时/计数器2的外部触发计数脉冲输入端;

​ ②P1.1:定时/计数器2的捕获、重装触发控制输入端。

4、P2口:
第一功能:准双向I/O口

特别注意:P2作为输入口时,必须先向锁存器写入高电平,使输出驱动电路中的T截止。

第二功能:拓展外部存储器时,输出高8位地址,与P0口组成16位地址。

5、P3口:
第一功能:准双向I/O口

特别注意:P3作为输入口时,必须先向锁存器写入高电平,使输出驱动电路中的T截止。

第二功能:①中断信号,②外部RAM的读写控制口

引脚    第二功能符号    第二功能名称
P3.0    RXD    串行数据接受
P3.1    TXD    串行数据发送
P3.2    INT0(非)    外部中断0申请
P3.3    INT1(非)    外部中断1申请
P3.4    T0    定时/计数器0的计数输入
P3.5    T1    定时/计数器1的计数输入
P3.6    WR(非)    外部数据存储器写选通
P3.7    RD(非)    外部数据存储器读选通
时钟电路和时序
1、晶振周期/振荡周期/拍节: P = 1/Fosc;

2、时钟周期/状态:S = 2P;

3、机器周期/扫描周期 = 6S = 12P;

eg:Fosc = 12 MHz P = 1/12us 机器周期 = 1us

指令系统
1、七种寻址方式
1.立即寻址
MOV            A,#70H        ;将立即数70H传送到累加器A
1
2.寄存器寻址:给出寄存器名字,将寄存器的内容取出来
MOV            A,R0        ;将寄存器R0中的内容传送到累加器A
1
累加器ACC、B寄存器、数据指针DPTA和进位C也可以用于寄存器寻址方式访问,只是对它们寻址,具体寄存器名称隐含在操作码中。

3.直接寻址:给出某一存储单元地址,对该单元的内容进行操作
MOV            A,70H        ;将片内RAM地址为70H的单元的内容送到A中。
1
直接寻址方式用于访问以下存储空间:
①SFR

eg:
MOV            A,80H
可以写成
MOV            A,P0
(P0口的地址为80H)
1
2
3
4
5
②片内数据存储器低于128字节

③位地址空间

4.寄存器间接寻址:给出寄存器名字,以该寄存器的内容为地址,将地址的数据取出。
MOV            A,@R1        ;将以寄存器R1的内容为地址的片内RAM单元的数据传送到A
1
可用作寄存器间接寻址的寄存器:R0,R1,DPTR

5.变址寻址(基寄存器加变址寄存器间接寻址):给出基寄存器(DPTR或PC)和变址寄存器(累加器A),将基寄存器和变址寄存器的内容之和为地址,将该地址的数据取出。
MOVC            A,@A+DPTR
1

6.相对寻址:以当前程序计数器PC值加上指令中给出的偏移量rel,构成实际操作数地址。
PC值:相对转移指令的存储地址+该指令字节数
eg:

JZ            rel         ;它是一条若累加器A为0就转移的双字节指令
                      ;该指令的存储地址为2050H
                      ;则当前PC值为2052H
1
2
3
偏移量rel:有符号,单字节,补码表示,负数表示从当前地址向前转移,正数表示向后。

目标地址=指令存储地址+指令字节数+rel

7.位寻址:在位操作指令中直接给出操作数的地址。
适用范围:①内部RAM 20H2FH单元中的位(007FH)或者SFR中具有位地址的。

MOV C,20H              ;将20H位的值送给进位位CY,20H为位地址
1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-goVlLGHw-1656075156497)(C:\Users\26449\AppData\Roaming\Typora\typora-user-images\image-20220622220132294.png)]

定时/计数器的特殊功能寄存器
TCON    定时/计数器状态字    TF1    TR1    TF0    TR0    IE1    IT1    IE0    IT0
TMOD    定时/计数器方式控制字    GATE    C/T    M1    M0    GATE    C/T    M1    M0
SCON    串口控制寄存器    SM0    SM1    SM2    REN    TB8    RB8    T1    R1
IE    中断允许控制寄存器    EA    -    -    ES    ET1    EX1    ET0    EX0
IP    中断优先级控制寄存器    -    -    -    PS    PT1    PX1    PT0    PX0
TCON:定时/计数器状态字
TCON    定时/计数器状态字    TF1    TR1    TF0    TR0    IE1    IT1    IE0    IT0
(1)IT0:外部中断0信号方式控制位

IT0 = 0时,外部中断0为电平触发,INT0(非)为低电平时有效;

IT0 = 1时,外部中断0为边沿触发,INT0(非)为负跳变时有效。

(2)IE0:外部中断0中断请求标志位

检测到中断信号时,该位由硬件置位,请求中断;

在边沿触发方式下,IE0由硬件清零;在电平触发模式下,只能由软件清零。

(3)(4)IT1和IE1同理

(5)TR0是T0的运行控制位

由软件置1和清0,当TR0 = 0时,停止计数;当TR0 = 1时,启动计数。

(6)TF0溢出标志位

T0产生溢出信号,TF0置1;如果溢出,TF0需用软件清0。

(7)(8)TR1和TF1同理

TMOD:定时/计数器工作方式寄存器
TMOD    定时/计数器方式控制字    GATE    C/T    M1    M0    GATE    C/T    M1    M0
(1)M1 M0:定时器四种工作方式选择位

M1 M0 = 00    工作方式0    13位定时/计数器工作方式
M1 M0 = 01    工作方式1    16位定时/计数器工作方式
M1 M0 = 10    工作方式2    自动重装载8位定时/计数器工作方式
M1 M0 = 11    工作方式3    两个独立8位定时/计数器(仅T0可用,T1停止工作)
(2)C/T(非):功能选择位

C/T(非)=0时为定时功能: 加1计数器对脉冲f进行计数,每来一个脉冲,计数器加1,直到计时器TFx满溢出;

C/T(非)=1时为计数功能: 加1计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外信号脉冲进行计数,每来一个脉冲,计数器加1,直到计时器TFx满溢出;

(3)GATE:门控位

GATE = 0时,仅由TCON中的TR0(TR1)位启动/停止T0(T1);

GATE = 1时,T0(T1)的启动或停止受外部中断信号INT0(非)(P3.2)或 INT1(非)(P3.3)的控制,此时TR0(TR1)需置位。

IE:中断允许控制寄存器
以下各位都是为0禁止,置1允许

IE    中断允许控制寄存器    EA    -    -    ES    ET1    EX1    ET0    EX0
(1)EX0:外部中断0允许位

(1)ET1:定时/计数器0中断允许位

(1)EX1:外部中断1允许位

(1)ET1:定时/计数器1中断允许位

(1)ES:串行口中断允许位

(1)EA:中断允许总控制位

IP:中断优先级控制寄存器
IP    中断优先级控制寄存器    -    -    -    PS    PT1    PX1    PT0    PX0
中断自然优先级(由高到低):外部中断0、定时/计数器0、外部中断1、定时/计数器1、串行口中断

若某一位置1,则相应的中断源为高优先级;若某一位为0,则则相应的中断源为低优先级。

SCON:串行接口控制寄存器
SCON    串口控制寄存器    SM0    SM1    SM2    REN    TB8    RB8    T1    R1
(1)SM0和SM1:串行接口工作方式设置位

SM0    SM1    工作方式    功能说明    波特率
0    0    方式0    同步移位寄存器,用于I/O拓展    fosc/12
0    1    方式1    10位异步收发器    由定时器T1溢出率控制
1    0    方式2    11位异步收发器    fosc/32或fosc/64
1    1    方式3    11位异步收发器    由定时器T1溢出率控制
方式0:波特率 = fosc/12

方式1和方式3:
波 特 率 = 2 S 32 ∗ f o s c 12 ( 256 − X ) 波特率 = \frac{2^S}{32}*\frac{fosc}{12(256-X)}
波特率= 
32

S
 
​    
 ∗ 
12(256−X)
fosc
​    
 

其中:S = SMOD

方式2:
波 特 率 = 2 S 64 ∗ f o s c 波特率 = \frac{2^S}{64}*fosc
波特率= 
64

S
 
​    
 ∗fosc

其中:S = SMOD

(2)SM2:方式2和方式3主要用于多机通信控制

当串行接口工作在方式2或方式3时,若SM2=1,则允许多机通信。

多机通信规定:第9位数据位为1 (即TB8=1),说明本帧数据为地址帧:第9位数据为0(即TB8=0),则本帧数据为数据帧。

当从机接收到的第9位数据(在RB8中)为1时,数据才装入接收缓冲器SBUF,并置RI=1向CPU申请中断;如果接收到的第9位数据(在RB8中)为0,则不置位中断标志RI且信息丢失。

当SM2=0时,则不管接收到第9位数据是否为1,都产生中断标志RI,并将接收到的数据装入SBUF。应用这一特点可以实现多机通信。

串行口工作在方式0时,SM2必须设置为0;工作在方式1时,如SM2=1,则只有接收到有效的停止位时才会激活RI。

(3)REN:允许接收控制位

当REN=1时,允许接收;当REN=0时,禁止接收。此位由软件置1或清零。

(4)TB8:发送数据的第9位

在方式2和方式3中,在多机通信中作为发送地址帧或数据帧的标志。

TB8=1,说明该发送帧为地址帧;TB8=0,说明该发送帧为数据帧。

在许多通信协议中,它可作为奇偶校验位。此位由软件置1或清零。在方式0和方式1中,此位未使用。

(5)RB8: 接收数据的第9位

在方式2和方式3中,接收到的第9位数据放在RB8中。它或是约定的奇/偶校验位,或是约定的地址/数据标志位。

在方式2和方式3多机通信中,RB8=1,说明该接收帧为地址帧;RB8=0,说明该接收帧为数据帧。

(6)TI: 发送中断标志位

在一帧数据发送完时,由硬件置位。

TI=1,可申请中断,说明发送缓冲器SBUF已空,CPU可以发送下一帧数据。中断被响应后,TI不能自动清零,必须由软件清零。

(7)RI: 接收中断标志位

在接收到一帧有效数据后,由硬件置位。

RI=1,可申请中断,表示一帧数据接收结束,并已装入接收缓冲器SBUF中。CPU响应中断,取走数据后,RI不能自动清零,必须由软件

清零。

​ 串行口发送中断标志TI和接收中断标志RI共为一个中断源。因此,CPU接收到中断请求后,不知道是发送中断TI还是接收中断RI,必须用软件来判别。单片机复位后,控制寄存器SCON的各位均清零。

PCON:电源控制寄存器控制字
最高位D7:SMOD:串行接口波特率的倍率控制位。

在方式1、方式2和方式3下,当SMOD = 1时,波特率加倍;当SMOD = 0时,波特率不加倍,即波特率和2^SMOD成正比。

1、单片机复位时,SMOD = 0

2、PCON没有位地址,要操作SMOD,需要对整个寄存器进行操作

中断计数初值的设定
晶振频率为fosc, 晶振周期:P = 1/fosc, 机器周期 = 12P = 12/fosc;

设定计数初始值为X,定时时间Tc

(1)在工作方式0的情况下,13位定时/计数器,溢出值为2^13 = 8192

① 计数值 = 溢出值 - 计数初值 = 8192 - X;

② 定时时间Tc = 机器 * 计数值 =
T c = 12 ∗ ( 8192 − X ) f o s c Tc = \frac{12*(8192 - X)}{fosc}
Tc= 
fosc
12∗(8192−X)
​    
 

③计数值计算公式:
X = 8192 − T c ∗ f o s c 12 X = 8192 - \frac{Tc*fosc}{12}
X=8192− 
12
Tc∗fosc
​    
 

(2)在工作方式1的情况下,16位定时/计数器,溢出值为2^16 = 65536

① 计数值 = 溢出值 - 计数初值 = 65536 - X;

② 定时时间Tc = 机器 * 计数值 =
T c = 12 ∗ ( 65536 − X ) f o s c Tc = \frac{12*(65536 - X)}{fosc}
Tc= 
fosc
12∗(65536−X)
​    
 

③计数值计算公式:
X = 65536 − T c ∗ f o s c 12 X = 65536 - \frac{Tc*fosc}{12}
X=65536− 
12
Tc∗fosc
​    
————————————————


                        
原文链接:https://blog.csdn.net/dwight_kyle/article/details/125452137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值