mobile01 发表于 2012-4-15 15:19:22

高手请问 Memory Model设定?

专案设定为 Large:variables in XDATA,但是有些程序使用用变量(非自定的变量)不想使用 XDATA 要怎么设?

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

mobile01 发表于 2012-4-17 20:32:20

自己顶一下{:cry:}

theophilus 发表于 2012-4-17 20:56:30

My wild guess:

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


NO GUARANTEE{:shy:} {:shy:}

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

wx85105157 发表于 2012-4-18 14:28:48



在这里设置

mobile01 发表于 2012-4-18 15:04:33

theophilus 发表于 2012-4-17 20:56 static/image/common/back.gif
My wild guess:

#pragma SAVE


谢谢~~研究看看{:lol:}

mobile01 发表于 2012-4-18 15:10:37

wx85105157 发表于 2012-4-18 14:28 static/image/common/back.gif
在这里设置

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

wx85105157 发表于 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,建议少用。但也有他的优点,具体用法属于中级问题,这里不提。

mobile01 发表于 2012-4-18 15:38:00

wx85105157 发表于 2012-4-18 15:15 static/image/common/back.gif
那这个变量加修饰嘛。。。

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


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

wx85105157 发表于 2012-4-19 22:46:08

mobile01 发表于 2012-4-18 15:38 static/image/common/back.gif
char XDATA i;这个是定义在外部程序空间(STC等把这些内存集成在芯片内部了)
char IDATA j;这个是定义在 ...

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

mobile01 发表于 2012-5-14 15:37:52

wx85105157 发表于 2012-4-19 22:46 static/image/common/back.gif
哪里还会产生变量??我倒是很好奇。。。keil有时候会把变量优化没了但是就没听说过空间越占越多的、、 ...

你用浮点运算后,反编后自己看吧{:titter:}

优化最高.....不可能不用其他暂存区吧
我目的是某个程序 阻档Memory Model 指定区域
页: [1]
查看完整版本: 高手请问 Memory Model设定?