导航:首页 > 操作系统 > 51单片机存储空间怎么解决

51单片机存储空间怎么解决

发布时间:2023-02-23 09:46:04

❶ 51单片机ram不够用,怎么优化程序

1.肯定的,嵌套越多,要压栈保存的信息就越多,占用的RAM就越多了,对51来说,最多就是CPU内256字节的RAM。

2.是的。

3.没用过这芯片……我用的最多的是AVR

4因为你定义了一个pagebuf[512],512字节啊!51单片机的data撑死才256字节(还没算压栈保存数据需要的RAM),所以编译器自动将这个数组放在了XDATA中。

❷ 51单片机烧录程序时提示程序末地址超过存储容量怎么解决小弟刚学单片机,求帮助,感激不尽。

你这种情况要分两种,一种就是总程序已经大于4KB大小。这个只能换用更大存储空间的片子。如果不是的话,就是第二种可能,你编程的时候地址空间没有被充分利用,这个就是发生在你的一些跳转,判断语句上,这个你要检查你的程序语句,是不是调的空间过大,以至于到最后程序计数器指针PC到了最后一个空间,你的程序还没有执行完。要让程序紧凑,不要在编程时空下太大空间,这样存储器空间利用率会很低的。

❸ 简述51单片机的存储器逻辑空间分布,并说明当存储器地址发生重叠时应如何处

MCS-51单片机存储器结构
1、 程序存储器
MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。强制CPU从外部程序存储器读取程序。对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。
8051片内有4kB的程序存储单元,其地址为0000H—0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意:
其中一组特殊是0000H—0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。
另一组特殊单元是0003H—002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下:
0003H—000AH 外部中断0中断地址区。
000BH—0012H 定时/计数器0中断地址区。
0013H—001AH 外部中断1中断地址区。
001BH—0022H 定时/计数器1中断地址区。
0023H—002AH 串行中断地址区。
可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。
2、 数据存储器
数据存储器也称为随机存取数据存储器。MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。
8051内部RAM共有256个单元,这256个单元共分为两部分。其一是地址从00H—7FH单元(共128个字节)为用户数据RAM。从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。
在00H—1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器。对应的编码关系如图2所示。
内部RAM的20H—2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H—7FH。位地址分配如表1所示,CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。

❹ MCS-51 单片机的存储器地址空间如何划分各地址空间的地址范围和容量如何

MCS-51 单片机的存储器地址空间,讲起来,要用几页.
简单介绍如下:
MCS-51的存储器有片内RAM、片外RAM 和 ROM 三个空间.
片内RAM:
地址范围是00H到7FH (52系列延伸到FFH).
其中00H到1FH,共32字节,分成四个工作寄存器区,每区有寄存器 R0~R7.
对此区域,可以使用 R0~R7 来操作,但是,当前只有一个区是可以这样读写的.
对此区域,也可以使用字节地址,来读写.
20H-2FH,共16字节,是位寻址区,共有128个“位”,位地址:00~7FH.
此区域,也可按照字节寻址,来读写.
30H-7FH,没有什么特色,只进行字节寻址.
80H-FFH,共有128个地址号码,其中离散的分布着21个特殊功能寄存器,必须直接寻址才能读写.
(52系列,在此范围,还有128字节的 RAM,必须间接寻址才能读写).
对上述空间读写,需用MOV指令.
----
片外RAM:
片外RAM的地址范围是0000H到FFFFH,容量即为64KB.
对片外RAM读写,需用MOVX指令.
----
ROM:
ROM的地址范围是0000H到FFFFH,容量即为64KB.
其中0000~0FFFH,即4K,在片内,其它在片外.
(对于8031,这64K的ROM,都在片外.)
对ROM读出,需用MOVC指令.

❺ 单片机 寄存器中定义变量过多 存储空间不够用怎么办

当然选寄存器多的呀,比如89C51是128个寄存器,而89C52就有256个可用了。你还不够用的话,选STC12系列,除了256个内部寄存器外,还嵌入了1K的SRAM可用有的还有1K的flash,足够你用了。

阅读全文

与51单片机存储空间怎么解决相关的资料

热点内容
个人所得税app的设置在哪里 浏览:134
linux空值 浏览:137
剪力墙钢筋用不用加密区 浏览:978
哪里app可以上高中生物课 浏览:472
cad粗糙度快捷键命令大全 浏览:521
腾讯云服务器无法运行软件 浏览:342
奔跑吧哪个app 浏览:97
哪个app听音乐最好 浏览:281
考研英语2真题pdf 浏览:699
烟台编程积木教育环境好不好 浏览:214
python优秀代码 浏览:620
androidtop命令 浏览:455
你平时怎么排解压力 浏览:68
表格中的文件夹怎样设置 浏览:476
em78单片机 浏览:960
splitjava空格 浏览:248
电脑怎么谷歌服务器地址 浏览:515
nx自定义工具启动宏命令 浏览:101
程序员怎么解决无法访问互联网 浏览:303
java访问本地文件 浏览:747