打印

关于W77E58片上1K RAM的问题

[复制链接]
2847|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yywxwen|  楼主 | 2007-9-10 17:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序如下:
unsigned char xdata tmp1,j1,k1;
void Main(void)
{
PMR=PMR|1;
tmp1 = 19;
j1 = 29;
k1 = 0x34;
if(tmp1==19)
j1=34;
while(1);
}
但就是改变不了这几个外部变量.这是为什么?查找过很多资料,都没有说明白.我也做了寄存器的修改,和定义XDATA的变量.请高手指教!!!

相关帖子

沙发
wuaxiang| | 2007-9-10 17:25 | 只看该作者

将这个定义unsigned char xdata tmp1,j1,k1;

将这个定义unsigned char xdata tmp1,j1,k1;
改成   unsigned char tmp1,j1,k1;

使用特权

评论回复
板凳
yywxwen|  楼主 | 2007-9-10 17:27 | 只看该作者

你这么做不就等于使用的是内部RAM了吗?我就是想用外部RAM

我这个程序只是例子,因为后面还要用到很大的数组,所以内部RAM是不够用的.你的回答没有根本解决XDATA不能用的问题.

使用特权

评论回复
地板
yywxwen|  楼主 | 2007-9-10 17:48 | 只看该作者

自己顶一下吧

使用特权

评论回复
5
5880527| | 2007-9-10 18:23 | 只看该作者

很简单的

很简单的呀,PMR最后一位置1时RAM有效,清0时外部RAM有效,没任何花哨的东西,置1时把它当成外部RAM访问就可以了

使用特权

评论回复
6
yywxwen|  楼主 | 2007-9-10 18:42 | 只看该作者

PMR最后一位置1为访问外部RAM吧?TO 5880527

我已经这样做了, 你看我的程序也是这么写的,但为什么不那些值都改不了,还是FF,而且我用伟副仿真器,老的E2000系列的就可以修改,而新的V5/S和KEIL都改不了这些外部RAM的值

使用特权

评论回复
7
yywxwen|  楼主 | 2007-9-10 18:47 | 只看该作者

明天继续等!!

使用特权

评论回复
8
5880527| | 2007-9-10 18:55 | 只看该作者

我说的没错

那你要不去看看它的汇编代码吧,置1肯定是那1K RAM有效,清0为默认的访问外部RAM,PMR要及时关闭,否则程序的其他地方也访问内部1K空间了

使用特权

评论回复
9
ayb_ice| | 2007-9-11 07:29 | 只看该作者

好象有两SFR要设置吧...

至少W78E516是这样的...

使用特权

评论回复
10
yywxwen|  楼主 | 2007-9-11 09:12 | 只看该作者

对的,你说的没错.TO 5880527

但是我现在已经把PMR最低位置1了,就是想把片上的1K RAM使用,但用不了.也就是说我定义了一个XDATA J,想把这个J赋值一个0X34,但这个J并没有被改变.
另外,我用的仿真器是伟副的V5/S.如果我把仿真器换成了伟副的E2000/T,设置没有改变,就可以使用这1K RAM.

使用特权

评论回复
11
chinaleao| | 2007-9-11 12:41 | 只看该作者

多简单的问题,仿真器的问题

你写到片子里然后把这几个数据做个输出看看

使用特权

评论回复
12
5880527| | 2007-9-11 17:27 | 只看该作者

为什么那么相信访真机

为什么那么相信访真机,有很多方法可以知道那设置对不的

使用特权

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

本版积分规则

4

主题

17

帖子

0

粉丝