导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→你的用法有错误

* 43886: 各位大虾,高手看过来,关于使用on-chip XRAM

   johnxliu 
johnxliu发表的帖子 

 你的用法有错误
看样子你在用 ADuC834片子。

有很多种 MCU 的在片的 XRAM 需要打开一个开关才能使用。
如果在打开这个开关前引用 XRAM, 则存取数据都是对外存的操作。

下面看你的程序。

#include "stdio.h"
#include "math.h"
#include "ADuc834.h"
#define XBYTE ((unsigned char volatile xdata*) 0)
//use internal RAM

double xdata A0=7.6965150;           // 这些赋值,是在运行到 main 函数之前做的。
double xdata A1=2.1224540;           // 看你的程序,是在 main 函数里进行打开 
double xdata A2=0.0007543914;      // XRAM 开关的动作,这样这些赋值就送错了地方
long int xdata point=0x98655;          //

//long int xdata 
sbit flag=0xb5;                                //

void usenum();
void main()
{
  
  int xdata i=0;
  int j;
 CFG834=1;                                    // 这是打开开关的指令吗? 
                                                    // 那些赋值都是在此之前执行的。
  point =point +1;                           // 此后对 XRAM 的操作应该是对在
                                                    // 片 XRAM 的操作
  while(1)
  {
  
  XBYTE[0x7ff]=0xfe;
   j=XBYTE[0x7ff];
   if(j==0xfe)
{   
    flag=1;
}
else 
{   flag=0;}

   }

}

程序不妨改成这样:
include "stdio.h"
#include "math.h"
#include "ADuc834.h"
#define XBYTE ((unsigned char volatile xdata*) 0)
//use internal RAM

double xdata A0;
double xdata A1;
double xdata A2;

long int xdata point;
//long int xdata 
sbit flag=0xb5;

void assigns(void)
{
  A0=7.6965150;
  A1=2.1224540;
  A2=0.0007543914;
  point=0x98655;
}

void usenum();
void main()
{
  
  int xdata i=0;
  int j;
 CFG834=1;
  assigns();
  point =point +1;
  while(1)
  {
  
  XBYTE[0x7ff]=0xfe;
   j=XBYTE[0x7ff];
   if(j==0xfe)
{   
    flag=1;
}
else 
{   flag=0;}

   }

}


发表时间:2003年10月26日20:51:34

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:请教谁能告诉我如何设计一个将5V锯齿波放大为300V锯齿波的电路谢谢 愿能和大家成为朋友,我
[下一篇帖子]:请教谁能告诉我如何设计一个将5V锯齿波放大为300V锯齿波的电路谢谢