特殊功能寄存器简言之就是有特殊用途的寄存器,一般来说,单片机的各种片上资源如串口、定时器/计数器等都依靠特殊功能寄存器来控制。其实,特殊功能寄存器的划分界限是模糊的,因为其位于片内RAM存储器寻址区,我们在这里进行介绍,在后面的存储器讲解中也会提到特殊功能寄存器。
标准的8051内部有21个特殊寄存器,某些新的单片机则提供了更多的特殊功能寄存器,因为它们往往提供了更多的片上资源。典型的特殊功能寄存器如表1-3所示。
表1-3 特殊功能寄存器(SFR)
符 号 | 特殊功能寄存器名称 | 地 址 |
ACC | 累加器 | E0H |
B | 乘法寄存器 | F0H |
PSW | 程序状态字 | D0H |
SP | 堆栈指针 | 81H |
DP0L | 数据指针DPTR0低8位 | 82H |
DP1L | 数据指针DPTR1低8位 | 84H |
DP0H | 数据指针DPTR0高8位 | 83H |
DP1H | 数据指针DPTR1高8位 | 85H |
IE | 中断允许控制器 | A8H |
IP | 中断优先控制器 | D8H |
P0 | I/O端口0 | 80H |
P1 | I/O端口1 | 90H |
P2 | I/O端口2 | A0H |
P3 | I/O端口3 | B0H |
PCON | 电源控制及波特率选择 | 87H |
SCON | 串行口控制器 | 98H |
SBUF | 串行数据缓冲器 | 99H |
TCON | 定时/计数器控制 | 88H |
T2CON | 定时/计数器2控制 | C8H |
TMOD | 定时/计数器方式选择 | 89H |
T2MOD | 定时/计数器2方式选择 | C9H |
TL0 | 定时/计数器0低8位 | 8AH |
TL1 | 定时/计数器1低8位 | 8BH |
TH0 | 定时/计数器0低8位 | 8CH |
TH1 | 定时/计数器1高8位 | 8DH |
TL2 | 定时/计数器2低8位 | CCH |
TH2 | 定时/计数器2高8位 | CDH |
RCAP2L | 定时/计数器2陷阱寄存器低字节 | CAH |
RCAP2H | 定时/计数器2陷阱寄存器高字节 | CBH |
AUXR | 辅助寄存器 | 8EH |
AUXR1 | 辅助寄存器1 | A2H |
WDTRST | WDT(看门狗)控制 | A6H |
从表1-3中可以看出,特殊功能寄存器往往和单片机的各种功能部件对应,这在后面的程序设计中会经常用到。