51寄存器表
转载:https://blog.csdn.net/qq_18671205/article/details/91038049?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.compare
寄存器一般使用格式
30H~7FH |
一般数据或堆栈使用区 |
20H~28H |
针对固定地址的区域 |
18H~1FH |
寄存器组3 |
10H~17H |
寄存器组2 |
08H~0FH |
寄存器组1 |
00H~07H |
寄存器组0 |
程序状态字 PSW (D0H)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
— |
P |
P位 :奇偶位;P=0表示A中1的个数是偶数,P=1表示A中1的个数是奇数。
OV位 :益出位;OV=1表示运算时有益出产生。
RS0,RS1:寄存器组选择位。
RS1 |
RS0 |
选择的寄存器组 |
0 |
0 |
寄存器组0 |
0 |
1 |
寄存器组1 |
1 |
0 |
寄存器组2 |
1 |
1 |
寄存器组3 |
F0位 :用户自行设置位。
AC位 :补助进位位;AC=1表示运算时较低4位有进位产生。
CY位 :进位位;CY=1表示运算时有进位产生。
3中断允许寄存器 IE (A8H)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
EA |
— |
ET2 |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
EA :整体中断允许位;EA=1允许中断。
ET2 :T2中断允许位;ET2=1允许中断(S52才有)。
ES :串行中断允许位;ES=1允许中断。
ET1 :T1中断允许位;ET1=1允许中断。
EX1 :INT1中断允许位;EX1=1允许中断。
ET0 :T0中断允许位;ET0=1允许中断。
EX0 :INT0中断允许位;EX0=1允许中断。
入口地址(按优先级): 外中断0—03H,定时器0—0BH,外中断1—13H,定时器1—1BH,串口—23H
中断优先次序寄存器 IP (B8H)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
— |
— |
PT2 |
PS |
PT1 |
PX1 |
PT0 |
PX0 |
PT2:T2 PS:串行口 PT1:T1 PX1:INT1 PT0:T0 PX0:INT0
2计时器计数器寄存器 TL0 (8AH),TH0 (8CH),TL1 (8BH),TH1 (8DH)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
32768 |
16384 |
8192 |
4096 |
2048 |
1024 |
512 |
256 |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
→ TH0(1) ← → TL0(1) ←
同过设订两个寄存器中每位代表的数值来决定定时值和计数值。
例:TH=#3CH ,TL=#0B0H 等于15536,它的定时值就为50000。
1计时器模式寄存器 TMOD (89H)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
GATE |
C/T |
M1 |
M0 |
GATE |
C/T |
M1 |
M0 |
→ 计时器1 ← → 计时器0 ←
GATE :GATE=1时表示T0或T1必须在INT0或INT1是高点位时才会初始化。
C/T :C/T=1由外引脚T0或T1做计数脉冲,C/T=0由TH和TL做定时数。
M1,M0:用来选择计时计数器工作模式
M1 |
M0 |
工作模式 |
说明 |
0 |
0 |
0 |
13位计时计数器 (8192) |
0 |
1 |
1 |
16位计时计数器 (65536) |
1 |
0 |
2 |
8位计时计数器,可自动重新载入计数值 (256) |
1 |
1 |
3 |
当成两组独立的8位计时器(256,T0和T1不能同时用) |
4计时器控制寄存器 TCON (88H)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
→ 用于定时/计数器 ← → 用于中断 ←
TF1 :TF1=1表示T1有中断产生。
TR1 :TR1=1表示T1开始运行。
TF0 :TF0=1表示T0有中断产生。
TR0 :TR0=1表示T0开始运行。
IE1 :IE1=1表示INT1有中断产生。
IT1 :IT1=1表示INT1为下降沿触发,IT1=0表示INT1为低电平触发。
IE0 :IE0=1表示INT0有中断产生。
IT0 :IT0=1表示INT0为下降沿(负跳变)触发,IT0=0表示INT0为低电平触发。
定时器T2:
状态控制寄存器 T2CON (C8H)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
TF2 |
EXF2 |
RCLK |
TCLK |
EXEN2 |
TR2 |
C/T2 |
CP/RL2 |
TF2 :T2中断益出标志;方式2,3置TF2,方式3不置。
EXF2 :T2外中断标志;EXF2=1,T2EX(P1.1)发生负跳变时置EXF2。
TCLK :串行口发送时钟选择标志。
RCLK :串行口接收时钟选择标志。
T2方式选择
|
RCLK或TCLK |
CP/RL2 |
TR2 |
|
1 |
0 |
0 |
1 |
16位常数自动再装入方式 |
2 |
0 |
1 |
1 |
16位捕获方式 |
3 |
1 |
× |
1 |
串行口波特率发生方式 |
4 |
× |
× |
× |
停止 |
EXEN2 :T2外部允许标志;
EXEN2=1,T2为捕获方式,T2EX(P1.1)发生负跳变时,TL2和TH2的当前值自动捕获到RCAP2L和RCAP2H中,同时置中断标志EXF2。
EXEN2=0,T2为自动装入方式,T2EX(P1.1)发生负跳变时,RCAP2L和RCAP2H自动装入TL2和TH2中,同时置中断标志EXF2。
C/T2 :外部计数器/定时器选择位;C/T2=1时为计数器,计数脉冲来自T2(P1.0);
C/T2=0时为定时器,以震荡脉冲的十二分频信号为计数信号。
TR2 :T2计数控制位;TR2=1时允许计数/定时。
CP/RL2 :捕获和常数自动再装入方式选择位;CP/RL2=1工作于捕获方式,CP/RL2=0工作于自动再装入方式,RCLK或TCLK为1时CP/RL2被忽略。
串行口控制寄存器 SCON (98H)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
TR8 |
TI |
RI |
工作方式选择位 SM0,SM1
SM0 |
SM1 |
工作模式 |
说明 |
波特率 |
0 |
0 |
0 |
此时串行口为移位寄存器用 |
震荡频率/12 |
0 |
1 |
1 |
8位元UART |
由T1和SMOD位决定 |
1 |
0 |
2 |
9位元UART |
震荡频率/64 或 震荡频率/32 |
1 |
1 |
3 |
9位元UART |
由T1和SMOD位决定 |
SM2 :对于方式0:SM2=0。
对于方式1:SM2=1,只有接到有效的停止位才激活RI。
对于方式2和3为多机通信控制位;SM2=1,则接收的第9位数据为0时不激活RI。
REN :REN=1允许接收数据。
TB8 :在模式2、3时为第9个发送位。
RB8 :在模式2、3时为第9个接收位。
对于方式1:如SM2=1,RB8为接收的停止位。
TI :TI=1表示UATR传送完成,产生中断。
RI :RI=1表示UATR接收完成,产生中断。
常用波特率表 (用11.0592M晶震)
波特率 |
TH1 |
SMOD |
1200 |
TH1=E8H |
0 |
2400 |
TH1=F4H |
0 |
4800 |
TH1=FAH |
0 |
9600 |
TH1=FDH |
0 |
19200 |
TH1=FDH |
1 |
波特率的计算
方式1: SMOD=0, 波特率= 1 × 晶震频率
- 12×(256—TH1)
SMOD=1, 波特率= 1 × 晶震频率
16 12×(256—TH1)
方式2: SMOD=0, 波特率= 1 × 晶震频率
32 12
SMOD=1, 波特率= 1 × 晶震频率
16 12
方式3: 同方式1
波特率与电源管理寄存器 PCON (87H)
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
SMOD |
— |
— |
— |
CF1 |
GF0 |
PD |
IDL |
SMOD :波特率倍增位 SMOD=1为16位,SMOD=0为32位。
CF1,GF0:为一般用途标记。
PD :停止运行控制位,PD=1时进入停止模式(在复位或外中断产生时恢复)。
IDL :闲置模式控制位,IDL=1时进入闲置模式(在复位或重新上电时恢复)。