2020-02-05 09:24发布
未命名.jpg (158.78 KB, 下载次数: 0)
下载附件
2012-4-18 14:28 上传
wx85105157 发表于 2012-4-18 14:28 在这里设置
最多设置5个标签!
#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.
未命名.jpg (158.78 KB, 下载次数: 0)
下载附件
2012-4-18 14:28 上传
在这里设置
这个我知道!!但是你这样是全部程序.
问题是全部程序设定为 XDATA 模式,但是有部份程序不能使用XDATA,所以必须指定部份程序使用DATA方式.
因为有些变量不是自己定的,而是keil 自己内定的.
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,建议少用。但也有他的优点,具体用法属于中级问题,这里不提。
一周热门 更多>