当前位置:首页 > 嵌入式 > 嵌入式分享
[导读]51单片机的 RAM 分为两个部分,一块是片内 RAM,一块是片外 RAM。标准 51 的片内 RAM 地址 从 0x00H~0x7F 共 128 个字节,而现在我们用的 51 系列的单片机都是带扩展片内 RAM 的,即 RAM 是从 0x00~0xFF 共 256 个字节。片外 RAM 最大可以扩展到 0x0000~0xFFFF 共 64K 字 节。这里有一点大家要明白,片内 RAM 和片外 RAM 的地址不是连起来的,片内是从 0x00 开始, 片外也是从 0x0000 开始的。还有一点,片内和片外这两个名词来自于早期的 51 单片机,分别指在 芯片内部和芯片外部,但现在几乎所有的 51 单片机芯片内部都是集成了片外 RAM 的,而真正的芯 片外扩展则很少用到了,虽然它还叫片外 RAM,但实际上它现在也是在单片机芯片内部的.但是单片机的这 512 字节的 RAM在地位上并不都是平等的,而是分块的,块与块之间在物理结构和 用法上都是有区别的,因此我们在使用的时候,也要注意一些问题。

51 单片机RAM 分为两个部分,一块是片内 RAM,一块是片外 RAM。标准 51 的片内 RAM 地址 从 0x00H~0x7F 共 128 个字节,而现在我们用的 51 系列的单片机都是带扩展片内 RAM 的,即 RAM 是从 0x00~0xFF 共 256 个字节。片外 RAM 最大可以扩展到 0x0000~0xFFFF 共 64K 字 节。这里有一点大家要明白,片内 RAM 和片外 RAM 的地址不是连起来的,片内是从 0x00 开始, 片外也是从 0x0000 开始的。还有一点,片内和片外这两个名词来自于早期的 51 单片机,分别指在 芯片内部和芯片外部,但现在几乎所有的 51 单片机芯片内部都是集成了片外 RAM 的,而真正的芯 片外扩展则很少用到了,虽然它还叫片外 RAM,但实际上它现在也是在单片机芯片内部的.但是单片机的这 512 字节的 RAM在地位上并不都是平等的,而是分块的,块与块之间在物理结构和 用法上都是有区别的,因此我们在使用的时候,也要注意一些问题。

51单片机RAM分为四个区域

1.工作寄存器区(00H~1FH)

2.位寻址区(20H~2FH)

3.用户RAM区(30H~7FH)

4.特殊功能寄存器(80H~FFH)

其中1.2.3处于RAM低128单元,4处于高128单元

也就是声明变量时data与idata位置

而栈就是在用户RAM区内人为开辟的一段空间,用于存放数据,而单片机也相应的为这段空间提供了硬件也就是SP寄存器。SP是一个8位寄存器用于存放栈顶位置。

51单片机的具体存储器地址分配

数据存储器(RAM)为 256 字节, 地址范围为00H~FFH, 分为两大部分: 低 128 字节(00H~7FH)为真正的RAM区; 高 128 字节(80H~FFH)为特殊功能寄存器区SFR。

程序存储器(ROM)的内部地址为 0000H~0FFFH, 共 4 KB; 外部地址为 1000H~FFFFH, 共 60 KB。 当程序计数器由内部 0FFFH执行到外部 1000H 时, 会自动跳转。

一般分为数据存储器RAM,程序存储器ROM,内存的具体地址都是规定好的,不需要我们划分,只需要我们知道他们的具体地址就好了。MCS-51单片机内部RAM读操作时,被选中单元的数据经数据线、输入/输出区处理后传送给CPU;写操作时,CPU将数据经输入/输出区转化、数据线存入被选中单元。由于受RAM的集成度限制。

大家可以看出来,data 是 idata 的一部分,pdata 是 xdata 的一部分。为什么还这样去区分呢?因为 RAM 分块的访问方式主要和汇编指令有关,因此这块内容大家了解一下即可,只需要记住如何访问 速度更快就行了。 我们定义一个变量 a,可以这样:unsigned char data a=0,而我们前边定义变量时都没有加 data 这个关键字,是因为在 Keil 默认设置下,data 是可以省略的,即什么都不加的时候变量就是定义到 data 区域中的。data 区域 RAM 的访问在汇编语言中用的是直接寻址,执行速度是最快的。如果你 定义成 idata,不仅仅可以访问 data 区域,还可以访问 0x80H~0xFF 的范围,但加了 idata 关键字 后,访问的时候 51 单片机用的是通用寄存器间接寻址,速度较 data会慢一些,而且我们平时大多 数情况下不太希望访问到 0x80H~0xFF,因为这块通常用于中断与函数调用的堆栈,所以在绝大多 数情况下,我们使用内部 RAM 的时候,只用 data 就可以了。 对于外部 RAM 来说,使用 pdata 定义的变量存到了外部 RAM 的 0x00~0xFF 的地址范围内,这块 地址的访问和 idata 类似,都是用通用寄存器间接寻址,而如果你定义成 xdata,可以访问的范围更 广泛,从 0 到 64K 的地址都可以访问到,但是它需要使用 2 个字节寄存器DPTRH 和 DPTRL 来进 行间接寻址,速度是最慢的。

MCS-51单片机由许多RAM组合而成。CPU访问存储器时,一次只能访问RAM中的某一片,片选控制区选中,地址译码器的输出信号控制该片某个地址的寄存器与CPU接通;当片选线接入无效电平时,则该片与CPU之间处于断开状态。

一般情况下,我们是使用 data 区域,data 不够用了,我们就用 xdata,如果希望程序执行效率尽量 高一点,就使用 pdata 关键字来定义。其它型号有更大的 RAM 的 51 系列单片机,如果要使用更大 的 RAM,就必须得用 xdata 来访问了。

声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制...

关键字: AVR 单片机 计算机

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通...

关键字: AVR 单片机 计算机

在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环。程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。所以...

关键字: 单片机 看门狗 计算机

AVR与传统类型的单片机相比,除了必须能实现原来的一些基本的功能,其在结构体系、功能部件、性能和可靠性等多方面有很大的提高和改善。 但使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以...

关键字: AVR 单片机 硬件

AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服...

关键字: AVR单片机 RAM 寄存器

AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU)精简指令集高速8位单片机。可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯...

关键字: AVR单片机 计算机 RAM

在单片机应用系统中,为保证系统中单片机能够工作稳定可靠,复位电路是必不可少的环节。单片机复位电路设计可靠性直接影响到整个系统工作的可靠性。目前单片机广泛应用在机电、医疗、仪器仪表、工业自动化等多个方面。目前市场上比较流行...

关键字: 单片机 复位电路 振荡源

PIC单片机从计算机外置、家用电器控制、电信通讯、智能仪器、汽车电子、金融电子等各方面得到了广泛的应用。PIC单片机以其可用性广、成本低、用户基础广、串行编程能力强等特点,深受广大开发者和工程师的欢迎。以下是PIC单片机...

关键字: 单片机 计算机 寄存器

STC单片机是一款增强型51单片机,完全兼容MCS-51,还增加了新的功能,比如新增两级中断优先级,多一个外中断,内置EEPROM,硬件看门狗,具有掉电模式,512B内存等。还支持ISP下载,不用编程器,只要一个MAX2...

关键字: 单片机 看门狗 中断

PIC单片机采用精简指令集,例如对于PIC16F716单片机,只有35条单字节指令。要用这么少的指令实现复杂的控制或计算,显然要在程序设计上多做文章,以下就程序设计需要注意的问题谈一些看法。 美国微芯公司开发的CMOS工...

关键字: 单片机 控制 编程

嵌入式分享

870 篇文章

关注

发布文章

编辑精选

技术子站

关闭