Keil_C51之Memory_mode解析

有时我们会遇到这样的报错:

*** ERROR L107: ADDRESS SPACE OVERFLOW

    SPACE:   DATA   

    SEGMENT: _DATA_GROUP_

    LENGTH:  002CH

Program Size: data=117.0 xdata=0 code=6242

Target not created.

Build Time Elapsed:  00:00:00

报错截图如下:

 这类报错是提醒  我们定义了过多的变量:

我们一般使用Small来存储变量,

就是说单片机优先把变量存储在内部ram里,如果内部ram不够了,

就会报错,所以我们编译的时候就要选取外部RAM了。

我们点开魔棒寻找解决方案:

 发现将memory mode改成Compact :variables inPDATA 在编译,

就不报错,通过编译了~~~

 那这个memory mode究竟是什么呢?

 Small:变量存储在内部ram里;

small模式下,再入函数的堆栈是设在idata中的
 
Compact:变量存储在外部ram里,使用页8位间接寻址;

compact模式下,再入函数堆栈是设在pdata中的


Large:变量存储在外部Ram里,使用16位间接寻址;


可见,compact和large必须有外部RAM支持。

使用Small的模式:

并不是说变量就不可以存储在外部,

只是你要指定存储在外部,,比如:
unsigned char xdata a;                     变量a存储在外部的ram。
unsigned char a;                               变量默认存储在内部ram。
使用Large的模式:
unsigned char xdata a;                      变量a存储在外部的ram。
unsigned char a;                                变量默认存储在外部ram。
以上就是说这三个选项其实只是影响,

当没有特别指定变量的存储空间的时候,

默认变量存储在哪里,比如上面的变量定义unsigned char a。

 如果在变量声明时未声明变量的存储器类型,

则该变量的存储器类型,由程序的存储模式来决定:


 小模式(small model):         默认data区
 紧凑模式(compact model):默认pdata区
 大模式(large model):         默认xdata区

相关蓝桥杯板载资源列举:

 官方手册22页:

 

1.IAP15f2k60S2含义: 

IAP15:单片机型号

F:单片机工作电压5.5V-4.2V

2k: 2048字节的SRAM、最大主频35MH

60: 60KB flash/ROM程序存储器

S2: 含有2个串口

KB=k

2^10Byte=1024Byte=1KB

1KB字节=1024Byte=1024*8bit

波特率bit/s

2、硬件信息:

  •         CPU:8位
  •         3个16位定时器  T0(P34)、T1(P35)、T2(P30)
  •         8通道10位ADC(3路PWM可做3路DA转换、不具备独立的DA转换)
  •         IO口最大位数42
  •         SP1总线:MOSI表示主机输出从机输入(SPI在温度模块,高速串行通信接口)
  •         外部中断2的中断号8    SP1中断号9
  •         IO口四种工作模式
  •         7种复位方式
  •         7种寻址方式
  •         外部存储器16地址总线、8位数据总线
  •         P2高8位地址、P0低8位地址和8位数据总线。

4. 存储器分类:

       data:  直接寻址的片内RAM
  bdata:位寻址片内RAM
  idata: 间接寻址片内RAM区


  pdata:间接访问的片外RAM的低256B
  xdata:间接访问用DPTR的片外RAM,
  code: 程序存储区ROM

5.RAM分类:

    易失存储器(掉电)

    RAM:随机存储器

    SRAM:   static RAM 静态存储器,(不需要刷新)

    DRAM:Dynamic RAM 动态存储器(需要刷新)

    DDRAM 双倍速率同步

    非易失存储器(掉电)

    ROM 自读存储器
    PROM 擦除一次

    EPROM 擦除1000次

    EEPROM电子可擦除

    flash、norflash

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
Keil C51是一款非常流行的集成开发环境(IDE),适用于51系列的微控制器开发。然而,Keil C51的最新版本v959只提供了英文界面,对于不熟悉英文的用户来说可能有一些使用上的困难。 为了解决这个问题,有些开发者开发了Keil C51v959的汉化补丁,以便将其界面翻译成中文方便用户使用。汉化补丁可以使用户更容易理解和操作Keil C51v959,并提高开发效率。 要安装汉化补丁,首先需要确保已经安装了Keil C51v959的原版软件。然后,下载并解压缩汉化补丁文件。在解压缩后的文件夹内,可以找到汉化补丁的安装程序。运行安装程序,并按照提示进行安装。安装完成后,重新打开Keil C51v959,就可以看到界面已经变成中文。 值得注意的是,汉化补丁只能翻译Keil C51v959的界面,不能翻译软件内部的所有文本信息。因此,在使用软件时仍然会遇到一些英文提示和文档。为了更好地使用Keil C51v959,建议用户学习一些基本的英文词汇,以便理解软件中的相关术语和说明。 总之,Keil C51v959汉化补丁是一个便利的工具,可以帮助用户更方便地使用Keil C51v959进行微控制器开发。使用汉化补丁后,用户可以将注意力更多地集中在开发工作上,提高开发效率。但请注意,汉化补丁只是辅助工具,英文能力对于深入了解和掌握Keil C51v959仍然是非常有帮助的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NULL指向我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值