常用特殊功能寄存器的功能总结
扫描二维码
随时随地手机看文章
特殊功能寄存器是80C51单片机中各功能部件对应的寄存器,用于存放相应功能部件的控制命令,状态或数据。
它是80C51单片机中最具有特色的部分,几乎所有80C51系列功能的增加和扩展都是通过增加特殊功能寄存器来达到目的的。英文缩写为SFR,是Special Function Register(特殊功能寄存器)的缩写。
SFR也是一种扩充数据类型,占用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1=0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们可以用P1=255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
SFR的地址空间为80H~FFH,但是仅有21个(80C51子系列)或26个(80C52子系列)字节作为特殊功能寄存器离散分布在这128个字节范围内,其余字节无定义,用户也不能对这些单元进行读/写操作。
在汇编语言程序设计中,比较常用的寄存器有累加器ACC、寄存器B、程序状态寄存器PSW、堆栈寄存器SP和数据指针寄存器DPTR。下面简要介绍这些寄存器。
(1)累加器A(Accumulator)
累加器A的名称是ACC,是指令中用的最多的寄存器,特别是很多算术逻辑运算指令必须使用该寄存器。需要注意的是,ACC和A都可以在指令中代表累加器A,但是指令中的ACC能代表累加器的字节地址,而A则不能。因此,在某些要求使用特殊功能寄存器地址的指令中,不能用A表示累加器。
(2)寄存器B
乘、除法指令必须使用寄存器B。除此之外,B与其他特殊功能寄存器没有差别。(3)程序状态寄存器PSW
PSW(见表2-6)可以记录指令的执行结果状态,比如:加法运算是否产生进位、借位等。PSW中各位的作用如下:
CY:进位标志位,当运算过程中累加器的最高位产生进位或借位时,被置为1,否则被清0。在位操作指令和移位指令中,该位起到类似于累加器A的作用,参与位操作或位运算。
AC:辅助进位标志位,在加、减运算过程中,运算结果的低4位(第3位)向高4位(第4位)产生进位时,该位被置1,否则被清0。
OV:溢出标志位,用于反映有符号数计算过程中是否溢出,0:无溢出,1:有溢出。
F0和F1:F0为用户定义标志位,供用户使用,没有特殊含义;F1为保留位,用户不能使用。
RS1和RS0:用于选择CPU当前使用的工作寄存器区子区,见表2-4。
P:奇偶标志位,反映累加器A中“1”的个数的奇偶性,若“1”的个数为偶数,则P为0,反之,P为1。每条指令执行后,单片机都会自动检测累加器A,并设置P标志位。
(4)堆栈寄存器SP
堆栈在片内RAM区中用于存放数据。堆栈操作有写和读两种,将数据存入堆栈称为“入栈”,从堆栈中读取数据称为“出栈”,入栈、出栈必须遵循“先入后出,后入先出”的原则。所有堆栈操作之前,SP中存放的数值作为一个特殊的地址,该地址指向的字节存储单元被称为“栈底”。堆栈操作后,SP中的地址所指向的存储单元是“栈顶”。
(5)数据指针寄存器DPTR
数据指针寄存器DPTR是一个16位寄存器,包含两个8位寄存器DPH和DPL。访问片外ROM、片外RAM和片外I/O接口时,DPTR可在指令中提供地址。
(6)P0~P3寄存器
P0~P3是单片机的4个8位并行I/O口,表2-2和表2-3中的特殊功能寄存器P0~P3是这4个并行I/O口的端口寄存器。通过这几个寄存器可以读取或设置对应的单片机引脚状态。
(7)其他寄存器
单片机内还有其他一些寄存器,如PCON、SBUF、SCON和TMOD等,与单片机内的硬件接口有关。