1. 寄存器一般使用格式
30H~7FH | 一般数据或堆栈使用区 |
20H~28H | 针对固定地址的区域 |
18H~1FH | 寄存器组3 |
10H~17H | 寄存器组2 |
08H~0FH | 寄存器组1 |
00H~07H | 寄存器组0 |
2. 程序状态字 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允许中断。
3.1 自然中断优先级
中断源名称 | 入口地址 | 中断允许位 | 默认优先级 | 中断编号 |
外部中断0 | 03H | EX0 | 高优先级 | 0 |
定时器0中断 | 0BH | ET0 | 低优先级 | 1 |
外部中断1 | 13H | EX1 | 低优先级 | 2 |
定时器1中断 | 1BH | ET1 | 低优先级 | 3 |
串口中断 | 23H | ES | 低优先级 | 4 |
注:在自然优先级中,即没有设置中断次序优先级的情况下,中断编号越小,则优先级越高。
4. 中断优先次序寄存器 IP (B8H)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
— | — | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
— | — | T2 | ES | T1 | INT1 | T0 | INT0 |
在IP寄存器中如果某位设置为1,则相应的中断就是高优先级,其余都为低优先级;在低优先级下,中断响应的顺序和自然优先级一样。
5. 计时器计数器寄存器
5.1 定时器1高8位 TH1 (8DH)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
5.2 定时器1低8位 TL1 (8BH)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
5.3 定时器0高8位 TH0 (8CH)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
5.4 定时器0低8位 TL0 (8AH)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
注:“RW”表示可读可写。
通过设置两个寄存器中每位代表的数值来决定定时值和计数值。
例:TH0=88H ,TL0=66H 等于34918,它的定时值就为65535 - 34918 = 30617。
6. 计时器模式寄存器 TMOD (89H)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
定时器1 | 定时器2 |
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不能同时用) |
7. 计时器控制寄存器 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为低电平触发。
8. 状态控制寄存器 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 :串行口接收时钟选择标志。
8.1 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被忽略。
9. 串行口控制寄存器 SCON (98H)
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
SM0 | SM1 | SM2 | REN | TB8 | TR8 | TI | RI |
9.1 工作方式选择位 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接收完成,产生中断。
9.2 常用波特率表 (用11.0592M晶振)
波特率 | TH1 | SMOD |
1200 | TH1=E8H | 0 |
2400 | TH1=F4H | 0 |
4800 | TH1=FAH | 0 |
9600 | TH1=FDH | 0 |
19200 | TH1=FDH | 1 |
9.3 波特率的计算
方式3: 同方式1
9.4 波特率与电源管理寄存器 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时进入闲置模式(在复位或重新上电时恢复)。
波特率:每秒钟传输2进位的数量
串口波特率:1200,2400,4800,9600,19200,38400,
常用的晶振:11.0592MHz 22.1184MHz