80C51单片机的内部RAM简介

80c51内部ram有256个单元,通常在空间上分为两个区。
低128个单元(00h~7fh)的内部数据ram区和高128个单元(80h~0ffh)的专用寄存器sfr区。
内部ram低128单元
80c51低128个单元是真正的内部数据ram区,是一个多功能复用性数据存储器,其按用途可分为3个区域,如下图所示:
1)工作寄存器区(00h~1fh)
工作寄存器区也称为通用寄存器,该区域共有4组寄存器,每组由8个寄存器组成,每个单元8位,各组均以r0~r7作为寄存器编号,共32个单元,单元的地址为00h~1fh。
在任一时刻,cpu只能使用其中一组通用寄存器,称为当前通用寄存器组,具体可由程序状态寄存器psw中的rs1,rs0位的状态组合来确定。
通用寄存器位cpu提供了就近存取数据的便利,提高了工作速度,也为编程提供了方便。
2)位寻址区(20h~2fh)
内部ram的20h~2fh共16个单元,计16*8=128位,位地址为00h~7fh。
位寻址区既可以作为一般的ram区进行字节操作,也可以对单元的每一位进行位操作,因此称为位寻址区,是存储空间的一部分。
3)用户ram区(30h~7fh)
所剩的80个单元即为用户ram区,单元地址为30h~7fh,这些单元可以作为数据缓冲器使用,在一般应用中把堆栈设置在该区域中,栈顶的位置由堆栈指针sp指示。
对内部ram低128单元的使用作几点说明:
1>80c51内部ram 00h~7fh单元可采用直接寻址或间接寻址方式实现数据传送;
2>内部ram 20h~2fh单元的位地址空间可实现位操作,当前工作寄存器组可通过软件对psw中的rs1,rs0位的状态设置来选择。
内部ram高128单元
内部ram高128单元是供给专用寄存器使用的,因此称为专用寄存器区(也称为特殊功能寄存器区,sfr区),单元地址是80h~0ffh。
80c51共有22个专用寄存器,其中程序计数器在物理上独立的,没有地址,故不可寻址,它不属于sfr区。
其余的21个专用寄存器都属于sfr区,是可寻址的,他们的单元地址离散地分布于80h~0ffh,如下表。
下面有关专用寄存器功能介绍。
1)程序计数器pc
pc是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。pc具有自动加1的功能,从而实现程序的顺序执行。
由于pc是不可寻址的,因此用户无法对他进行读/写操作,但可以通过转移,调用,返回等指令改变其内容,以实现程序的转移。pc的寻址范围为64kb,即地址空间为0000~0ffffh。
2)累加器acc或a
累加器acc是8位寄存器,是最常用的专用寄存器,功能强,地位重要。它既可存放操作数,又可以存放运算的中间结果。
80c51系列单片机中许多指令的操作数来自累加器acc。累加器非常繁忙,是单片机的执行程序瓶颈,制约了单片机工作效率的提高,现在已经有些单片机用寄存器阵列来代替累加器acc。
3)寄存器b
寄存器b是8位寄存器,主要用于乘除运算。乘法运算时,b中存放乘数,乘法操作后,高8位结果存于b寄存器中。
除法运算时,b中存放除法,除法操作后,余数存于寄存器b中,寄存器b也可作为一般的寄存器用。
4)程序状态字psw
程序状态字是8位寄存器,用于指示程序运行状态信息。其中有些位是根据程序执行结果由硬件自动设置的,而有些位可由用户通过指令方法设定。
psw中各标志位名称及定义如下:
cy:进(借)位标志位,也是位处理器的位累加器c。在加减运算中,若操作结果的最高位有进位或有借位时,cy由硬件自动置1,否则清0。
在位操作时,cy作为累加器c使用,参与进行位传送,位与,位或等位操作。另外,某些控制转移类指令也会影响cy位状态。
ac:辅助进(借)位标志位。在加减运算中,当操作结果的低4位向高4位进位或借位时,此标志位由硬件自动置1,否则清0。
f0:用户标志位,由用户通过软件设定,用以控制程序转向。
rs1,rs0:寄存器组选择位。用于设定当前通用寄存器组的组号。
通用寄存器组共有4组,其对应关系如下表:
rs1,rs0的状态由软件设置,被选中寄存器组为当前通用寄存器组。
ov:溢出标志位,在带符号数(补码数)的加减运算中,ov=1表示加减运算的结果超出了累加器a的8位符号数表示范围(-128~+127),产生溢出,因此运算结果是错误的。ov=0,表示结果未超出255,结果只存在a中。
除法时,ov=1,表示除数为0。ov=0,表示除数不为0。
p:奇偶标志位,执行结果中含1的奇偶状态,即是奇数个1,还是偶数个1。
5)数据指针dptr
数据指针dptr为16位寄存器,它是80c51中唯一的一个16位寄存器。编程时,既可以按16位寄存器使用,也可以作为两个8位寄存器分开使用。
dph为dptr的高8位寄存器,dpl为dptr的低8位寄存器。dptr通常在访问外部数据存储器或i/o接口时作为地址指针使用,寻址范围为64kb。
6)堆栈指针sp
在微型计算机的内存中,都需要设置一个对数据实行后进先出操作的区域,这个区域称为堆栈。
堆栈通常是存储器的一部分,为了保证栈区的数据能按后进先出的规则来操作,专门设置一个地址寄存器来管理,这个地址寄存器称为堆栈指针sp,用于指示栈顶单元地址。
51系列单片机中堆栈指针sp为8位寄存器。
在51系列单片机中,当数据存入堆栈中,堆栈指针将自动加1并将数据存入堆栈指针所指的存储单元,当需要从堆栈中取出数据时,首先将堆栈指针所指的存储单元中的数据读出,然后自动将堆栈指针减1。
所以堆栈指针始终指向堆栈中最后存入数据的那个单元,故称该单元为堆栈顶栈。由于数据存入堆栈时堆栈指针自动加1(地址增大),所以称为向上生长型堆栈。
操作规程时:进栈操作,先将sp加1,后写入数据;出栈操作,先读出数据,后将sp减1。
51系列单片机中,堆栈规定设在单片机的内部ram中,同时在特殊功能寄存器中将81h设置为堆栈指针,即sp=81h,81h的内容指示了栈顶地址。
堆栈的主要功能是保护断点和保护现场。51系列单片机系统复位时,sp=07h。
由于89c51片内ram区有限,所以栈顶越小,堆栈深度就越深。为便于通用4组寄存器组都能使用,一般在系统初始化时使用mov sp, #30h将栈顶设置在30h位置处。
堆栈的使用方式有两种,一种是自动方式,在调用子程序或中断时,返回地址自动进栈。程序返回时,断点再自动弹回pc。这种方式无须用户操作。
另一种指令模式,进栈指令是push,出栈指令是pop。
7)电源控制及波特率选择控制寄存器pcon
pcon为8位寄存器,主要用于控制单片机工作于低功耗模式。80c51单片机的低功耗方式有待机方式和掉电保护方式两种。
待机方式和掉电保护方式都由专用寄存器pcon的有关位来控制。pcon寄存器不可位寻址,只能字节寻址。
pd:掉电保护位,为1时进入掉电保护方式;
idl:待机方式位,为1时进入待机方式。
8)并行i/o端口p0~p3
专用寄存器p0,p1,p2,p3分别是并行i/o口p0~p3的数据锁存器。在80c51系列单片机中,没有专门的i/o口操作指令,而采用同一的mov指令操作,把i/o口当做一般的专用寄存器使用。
9)串行数据缓冲器sbuf
串行数据缓冲器sbuf是串行口的一个专用寄存器,由一个发送缓冲器和一个接收缓冲器组成。两个缓冲器在物理上独立,但公用一个地址(99h)。sbuf用来存放要发送的或已接收的数据。
10)定时/计数器的专用寄存器
80c51系列单片机中有两个16位的定时/计数器t0和t1,它们分别由两个独立的8位计数器组成,t0由专用寄存器th0,tl0组成。t1由专用寄存器th1,tl1组成。
11)控制类专用寄存器
ie,ip,tmod,tcon,scon寄存器是中断系统,定时/计数器,串行口的控制寄存器,包含控制位和状态位。控制位是编程写入的控制操作位。
对专用寄存器的字节寻址作如下几点说明:
1>21个可字节寻址的专用寄存器离散分散在内部ram的高128单元,其余的空闲单元为保留区,无定义,用户不能使用。
2>程序计数器pc是唯一不能寻址的专用寄存器,pc不占用内部ram单元,它在物理上是独立的。
3>对专用寄存器只能使用直接寻址方式,在指令中可写成寄存器符号或单元地址形式。
在21个可寻址的专用寄存器中,有11个寄存器它们的字节地址都能被8整除,可以进行位寻址,即可对这些专用寄存器单元的每一位进行位操作,每一位都有固定的位地址。

扬尘监测系统助力改善空气质量
美图公司表示:华为没有使用美图的任何影像技术
关于GAIA支撑模块的简单说明
工信部出手勒“马缰绳” 液晶面板踩刹车
NB-IoT射频指标到底是啥?一文讲清楚
80C51单片机的内部RAM简介
中国有无载人登月计划?国家航天局:先搞关键技术攻关
汽车safe检测仪的应用对于汽车安全提供了保障
关于云存储的一些优势分析
比特币扩容之争的困局是core开发组造成的吗?
赛普拉斯PSoC 4的首批两个系列芯片现已量产上市
什么是线电压,什么是相电压?
电饭煲的原理说明
我国制造业正对外开放瞄准“高端”,行业迎来新升级
LTspice负压电荷泵的振荡器频率分析
无人机集群的概念玩嗨了 一飞智控无人机集群表演在天津大学创造吉尼斯世界纪录
手机锂电池的种类及使用方法
法国赛峰公司暂停了在A320飞机上安装电动滑行系统的项目
变压器没有负载时还需要进行无功补偿吗
正版双轨奖金制度直销软件|双轨直销自动结算系统