高手请问 Memory Model设定?

2020-02-05 09:24发布

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

所谓非自定的变量是keil c51 自己产生的!!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
wx85105157
2020-02-05 22:56
那这个变量加修饰嘛。。。

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

一周热门 更多>