当前位置:首页 > 51单片机学习总结 - 图文
8051的内部存储器
8051单片机的芯片内部有RAM和ROM两类存储器。 8051的内部RAM共有256个单元,通常把这些单元按其功能划分为两部分:低128单元(地址00H~7FH)和高128单元(地址80H~FFH)。
低128单元按其用途划分为三个区域: 1) 寄存器区
共有四组通用寄存器,每组8个寄存单元(8位),各组都以R0~R7作为寄存器单元的编号。常用于存放操作数及中间结果等。有时也称为工作寄存器,占据内部RAM的00H~1FH单元地址。
在任一时刻,CPU只能使用其中的一组寄存器,并把正在使用的那组寄存器称之为当前寄存器组。寄存器组的选取由程序状态字寄存器PSW中的RS1、RS2位的状态组合来决定。 通用寄存器为CPU提供了就近数据存储的便利,有利于提高单片机的运算速度。同时,使用通用寄存器还能提高程序编制的灵活性。 2) 位寻址区
内部RAM的20H~2FH单元,既可以作为一般的RAM单元使用,进行字节操作,又可以对单元中的每一位进行位操作。位寻址区共有16个RAM单元(共128位),位地址为00H~7FH。MCS-51利用这个位寻址区进行布尔处理机的存储。
3) 用户RAM区
内部RAM低128单元-通用寄存器32单元-位寻址区16单元=80单元,其地址为30H~7FH。在一般应用中常把堆栈开辟在此区中。
高128单元
供给专用寄存器使用(专用寄存器SFR区),其单元地址为80H~FFH。 8051共有22个专用寄存器(21个是可字节寻址的)。
其中典型的5个如下:
1) 程序计数器(PC-Program Counter)
PC是16位的计数器(寻址范围为64KB),其内容为将要执行的指令地址。 PC有自动加1功能,从而实现程序的顺序执行。 PC无地址(不可寻址),但可通过指令改变其内容。 2) 累加器(ACC-Accumulator)
ACC为8位寄存器,功能较多,也最为常用。既可用于存放操作数,也可用来存放运算的
中间结果。
单片机中的大部分数据操作都是通过ACC进行的,因此ACC实际上称为单片机程序运行的“瓶颈”,制约着单片机软件效率的提高。 3) B寄存器
8位寄存器,主要用于乘除运算,也可作为一般数据寄存器使用。 乘法运算时,B为乘数,乘积的高8位也存于B中。 除法运算时,B为除数,余数也存于B中。 4) 程序状态字(PSW-PROGRAM STATUS WORD) 8位寄存器,用于寄存程序运行的状态信息。
其中,
CY(PSW.7)——进位标志位:存放算术运算的进位标志;在位操作中,作累加位使用,位传送、位与、位或等位操作,操作位之一固定是进位标志位。
AC(PSW.6)——辅助进位标志位:加减运算中,当有低4位向高4位进位或借位时,AC由硬件置位,否则被清零。
F0(PSW.5)——用户标志位:用来控制程序的转向,需要时用软件方法置位或复位。 RS1和RS0(PSW.4和PSW.3)——寄存器组选择位:用于设定通用寄存器的组号(软件设置)。
OV(PSW.2)——溢出标志位 PSW.1保留未用
P(PSW.0)——奇偶标志位:表明累加器中数的奇偶性(在每个指令周期由硬件自动进行置位或复位)
5) 数据指针(DPTR)
16位寄存器,编程时,DPTR既可按16位寄存器使用,也可以按两个8位寄存器分开使用。即,分成DPH和DPL。
DPTR通常用作访问外部数据存储器时的地址指针(外部数据存储器的寻址范围为64KB)。
专用寄存器的字节寻址
1) 在22个专用寄存器中,唯一一个不可寻址的专用寄存器是PC。PC不占据RAM单元,
它在物理上是独立的;
2) 21个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元中。尽管还余有
许多空闲地址,但用户不能使用;
3) 对专用寄存器只能使用直接寻址方式,编程时既可使用寄存器符号,也可使用寄存器单
元地址。
共分享92篇相关文档