在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下:
符号 地址 功能介绍
B F0H B寄存器
ACC E0H 累加器
PSW D0H 程序状态字
IP B8H 中断优先级控制寄存器
P3 B0H P3口锁存器
IE A8H 中断允许控制寄存器
P2 A0H P2口锁存器
SBUF 99H 串行口锁存器
SCON 98H 串行口控制寄存器
P1 90H P1口锁存器
TH1 8DH 定时器/计数器1(高8位)
TH0 8CH 定时器/计数器1(低8位)
TL1 8BH 定时器/计数器0(高8位)
TL0 8AH 定时器/计数器0(低8位)
TMOD 89H 定时器/计数器方式控制寄存器
TCON 88H 定时器/计数器控制寄存器
DPH 83H 数据地址指针(高8位)
DPL 82H 数据地址指针(低8位)
SP 81H 堆栈指针
P0 80H P0口锁存器
PCON 87H 电源控制寄存器
分别说明如下:
1、ACC---是累加器,通常用A表示。
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器。
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表:
D7 D6 D5 D4 D3 D2 D1 D0
CY AC F0 RS1 RS0 OV P
下面我们逐一介绍各位的用途
CY:进位标志。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0
例:78H+97H(01111000+10010111)
AC:辅助进、借位(高半字节与低半字节间的进、借位)。
例:57H+3AH(01010111+00111010)
F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。
RS1、RS0:工作寄存器组选择位。这个我们已知了。
0V:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。
P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。
例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。
4、DPTR(DPH、DPL)--------数据指针,可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。
5、P0、P1、P2、P3------这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。
6、IE-----中断充许寄存器
按位寻址,地址:A8H
B7 B6 B5 B4 B3 B2 B1 B0
EA - ET2 ES ET1 EX1 ET0 EX0
EA(IE.7):EA=0时,所有中断禁止(即不产生中断)
EA=1时,各中断的产生由个别的允许位决定
-(IE.6):保留
ET2(IE.5):定时2溢出中断充许(8052用)
ES(IE.4):串行口中断充许(ES=1充许,ES=0禁止)
ET1(IE.3):定时1中断充许
EX1(IE.2):外中断INT1中断充许
ET0(IE.1):定时器0中断充许
EX0(IE.0):外部中断INT0的中断允许
7、IP-----中断优先级控制寄存器
按位寻址,地址位B8H
B7 B6 B5 B4 B3 B2 B1 B0
- - PT2 PS PT1 PX1 PT0 PX0
-(IP.7):保留
-(IP.6):保留
PT2(IP.5):定时2中断优先(8052用)
PS(IP.4):串行口中断优先
PT1(IP.3):定时1中断优先
PX1(IP.2):外中断INT1中断优先
PT0(IP.1):定时器0中断优先
PX0(IP.0):外部中断INT0的中断优先
8、TMOD-----定时器控制寄存器
不按位寻址,地址89H
B7 B6 B5 B4 B3 B2 B1 B0
GATE C/T M1 M0 GATE C/T M1 M
GATE:定时操作开关控制位,当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。
C/T:定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。
M1:模式选择位高位
M0:模式选择位低位
M1 M0 工作模式
0 0 13位计数/计时器
0 1 16位计数/计时器
1 0 8位自动加载计数/计时器
1 1 定时器1停止工作,定时器0分为两个独立的8位定时器TH0及TL0
9、TCON-----定时器控制寄存器
803l单片机共有21个字节的特殊功能寄存器(SFR),起着专用寄存器的作用,用来设置片内电路的运行方式,记录电路的运行状态,并表明有关标志等。此外,特殊功能寄存器中,还有把并行和串行I/O端口映射过来的寄存器,对这些寄存器的读写,可实现从相应I/O端口的输入、输出操作。
21个特殊功能寄存器不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作。