打印

P89LV51在KEIL C里面怎么设置RAM?

[复制链接]
3013|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llllwwww|  楼主 | 2009-4-19 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在遇到了一个KEIL C的问题,大家看能不能帮我分析一下!
1.我现在使用的是P89LV51RD2型单片机,在KEIL C里面能找到相应的器件.这款芯片里面带有256字节的RAM和1K的Xdata寻址的SRAM.
2.因为我需要写的程序很大,很需要单片机里面的RAM资源,所以我在KEIL C里面把RAM这一项设置成了Large:......xdata,发现程序不能
正常运行,把RAM设置成Small:.......data,这样就可以运行.
3.在KEIL C里面不管设置成Large或者Small,程序都可以编译通过,只是编译的报告不同:如果设置成Large程序里面定义的data变量大部分都自动定义为了xdata,如果设置成Small程序里面定义的data和xdata都是正常的.被编译的源程序都是一样的.
4.现在发现的问题是,只有当RAM设置成Small程序才能正常运行,设置成Large程序不能正常运行,中途飞掉了!
                                                                          谢谢

相关帖子

沙发
古道热肠| | 2009-4-19 10:49 | 只看该作者

编译模式与SRAM配置是分开的.

使用特权

评论回复
板凳
ayb_ice| | 2009-4-19 12:18 | 只看该作者

模式只改变没有声明具体存储类型的变量

一般都是使用小模式,然后根据需要将变量定位在不同的存储区域即可.

使用特权

评论回复
地板
llllwwww|  楼主 | 2009-4-19 13:08 | 只看该作者

哦,谢谢大家的指点~

但是现在我的程序中要用很多RAM,也就是变量,现有的RAM根本不够用,能不能用大模式呢?我想小模式肯定不够用的,把一些SRAM的XDATA也加进来,别人用的是C80C51F126,这个芯片可以支持大模式,我的P89C51RD2能不能呢?

使用特权

评论回复
5
ayb_ice| | 2009-4-19 17:27 | 只看该作者

你搞清楚模式的区别没有?

使用特权

评论回复
6
llllwwww|  楼主 | 2009-4-19 17:53 | 只看该作者

什么区别?

我的理解是小模式是正常的那种89C51的模式,不带内部的SRAM的,大模式是可以支持内部SRAM的,可以将程序中定义的unsigned char data i,j;或者unsigned int data m,n;这些变量都放置在SRAM中?而小模式只能把data放在RAM中,xdata放在SRAM中,是不是这样?

使用特权

评论回复
7
ayb_ice| | 2009-4-19 18:13 | 只看该作者

还是去看一下帮助文档吧

你都没有搞data的意思...

使用特权

评论回复
8
llllwwww|  楼主 | 2009-4-19 19:32 | 只看该作者

那我现在应该怎么设置?

只能用小模式?如果想用大模式应该怎么办?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

91

主题

450

帖子

2

粉丝