搜索
bottom↓
回复: 9

高手请问 Memory Model设定?

[复制链接]

出0入0汤圆

发表于 2012-4-15 15:19:22 | 显示全部楼层 |阅读模式
专案设定为 Large:variables in XDATA,但是有些程序使用用变量(非自定的变量)不想使用 XDATA 要怎么设?

所谓非自定的变量是keil c51 自己产生的!!!!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-4-17 20:32:20 | 显示全部楼层
自己顶一下

出0入0汤圆

发表于 2012-4-17 20:56:30 | 显示全部楼层
My wild guess:

#pragma SAVE
#pragma SMALL /* whatever */
...
... your code ...
... fin
#pragma RESTORE


NO GUARANTEE  

However, if it does work, you may want to define variables with storage specifier such as idata, xdata or pdata explicitly.

出0入0汤圆

发表于 2012-4-18 14:28:48 | 显示全部楼层


在这里设置

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-4-18 15:04:33 | 显示全部楼层
theophilus 发表于 2012-4-17 20:56
My wild guess:

#pragma SAVE

谢谢~~研究看看

出0入0汤圆

 楼主| 发表于 2012-4-18 15:10:37 | 显示全部楼层
wx85105157 发表于 2012-4-18 14:28
在这里设置

这个我知道!!但是你这样是全部程序.
问题是全部程序设定为 XDATA 模式,但是有部份程序不能使用XDATA,所以必须指定部份程序使用DATA方式.
因为有些变量不是自己定的,而是keil 自己内定的.

出0入0汤圆

发表于 2012-4-18 15:15:24 | 显示全部楼层
那这个变量加修饰嘛。。。

char XDATA i;这个是定义在外部程序空间(STC等把这些内存集成在芯片内部了)
char IDATA j;这个是定义在扩展的内存(52)
char DATA k;这个是单片机51默认的128内存



8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code、data、xdata、idata以及根据51系列特点而设定的pdata类型

在51系列中data,idata,xdata,pdata的区别
data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)
xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。
pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx读写。这个比较特殊,而且C51好象有对此BUG,建议少用。但也有他的优点,具体用法属于中级问题,这里不提。

出0入0汤圆

 楼主| 发表于 2012-4-18 15:38:00 | 显示全部楼层
wx85105157 发表于 2012-4-18 15:15
那这个变量加修饰嘛。。。

char XDATA i;这个是定义在外部程序空间(STC等把这些内存集成在芯片内部了)

char XDATA i;这个是定义在外部程序空间(STC等把这些内存集成在芯片内部了)
char IDATA j;这个是定义在扩展的内存(52)
char DATA k;这个是单片机51默认的128内存
重点是,有些变量是 keil c51 自己产生的,不是自己定的,你要怎么设?

出0入0汤圆

发表于 2012-4-19 22:46:08 | 显示全部楼层
mobile01 发表于 2012-4-18 15:38
char XDATA i;这个是定义在外部程序空间(STC等把这些内存集成在芯片内部了)
char IDATA j;这个是定义在 ...

哪里还会产生变量??我倒是很好奇。。。keil有时候会把变量优化没了  但是就没听说过空间越占越多的、、

出0入0汤圆

 楼主| 发表于 2012-5-14 15:37:52 | 显示全部楼层
wx85105157 发表于 2012-4-19 22:46
哪里还会产生变量??我倒是很好奇。。。keil有时候会把变量优化没了  但是就没听说过空间越占越多的、、 ...

你用浮点运算后,反编后自己看吧

优化最高.....不可能不用其他暂存区吧
我目的是某个程序 阻档Memory Model 指定区域
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表