打印

为什么在加了外部数据存储器62256的程序后,总程序不能运行

[复制链接]
3617|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-10-29 18:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大哥帮看看我的62256读写程序有问题吗?
uchar idata dig1[7]={"4 8.5 0"};

void WR62256()
{ uchar i;
  addr=0x0100;//数据存储的起始地址
   for(i=0;i<4;i++)//连续存储14个数据
  {
     *addr=dig1[2*i];
     addr++;
  }
}
void RD62256()
{  uchar i;
   addr=0x0100; //读取数据的起始地址
   for(i=0;i<4;i++)//连续读取14个数据
   {
        dig1[2*i]=*addr;
        addr++;

   }
}

void main(void)
{    
     initlcm();
     initmcu();
     WR62256();//写62256
     for(;;)
     {
        RD62256();//从62256读dig1[]
          dealkey();//用键盘改变dig1[]的值
         
        dis_voltage();
        //WR62256();将改变后的值写入62256,
但是加了这句话程序就运行不过去,不知道为什么
         难道我的62256写有错吗?
     }
}

相关帖子

沙发
lbx_00| | 2007-10-29 20:41 | 只看该作者

你这样试试

在WR62256();前面插入无用码,keil有时候很怪的,还有,就是从你的帖子里看不到ddr的定义,

使用特权

评论回复
板凳
ccjchen|  楼主 | 2007-10-29 21:06 | 只看该作者

addr 定义我省略了,现在不知道怎么又好了,我的程序没问题

还有个问题要请教大虾,如果我想直接访问0x0100这个地址,应该怎么写呢
xdata(0x0100),还是xbyte(0x0100),或者用_at_应该怎么写?

使用特权

评论回复
地板
沈老| | 2007-10-29 21:15 | 只看该作者

uchar volatile xdata addr[] _at_ 0x0100;

1>.使用:uchar volatile xdata addr[] _at_ 0x0100;//来定义
2>.用数组存取:
void WR62256()
{ uchar i;
//addr=0x0100;
  for(i=0;i<4;i++)
  {     
      addr=dig1[2*i];
  }
}
void RD62256()
{  uchar i;
   for(i=0;i<4;i++)
   {
        dig1[2*i]=addr;
   }
}
3>.外存0x100地址是不是太低了?
.

使用特权

评论回复
5
ccjchen|  楼主 | 2007-10-29 23:04 | 只看该作者

谢谢沈老阿!对你的方法有几个地方不明白阿

1.volatile 没用过,在书上也没看过,什么意思啊,必须用吗?
2.你的第二种方法中没有指明存在外部ram中的什么地方这样也可以吗?那不是自动分配外部空间了吗?
3.外存不是从0x0000-0xffff都可以放数据吗,难道低位空间还有其他用处吗?

使用特权

评论回复
6
沈老| | 2007-10-30 19:36 | 只看该作者

再说几句

1>."C51.pdf",104页中有这样的话:
NOTE
If you use the _at_ keyword to declare a variable that accesses an XDATA peripheral, you may require the volatile keyword to ensure that the C compiler does not optimize out necessary memory accesses.
"volatile"目的基本如上.
2>.定义和使用即(1,2)不是2种方法.
3>.有的芯片本身有1到4K的SRAM作XDATA(如W77E58).所以0x100就太低了.

使用特权

评论回复
7
ccjchen|  楼主 | 2007-10-30 19:52 | 只看该作者

万分感谢我明白了!

使用特权

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

本版积分规则

175

主题

446

帖子

1

粉丝