3285|2

89

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于STC 89c516 RD+在xdata区用链表的问题 [复制链接]

写了个链表程序,在keil上调试能成功,但是放在单片机里调试时就出问题了

#define mempoolsize 512; //定义动态内存分配池大小
#define  startpool 511; //定义动态内存分配池开始地址

//节点结构
typedef struct  Lnode{
uchar  edata;
struct  Lnode   xdata *next;
}Lnode,xdata *Link;

//表结构
typedef  struct {
Link  head,tail;
uint len;
}Linklist;

Linklist  xdata res;  //接收回答链表
Linklist   xdata datastream ; //数据流表
Linklist  xdata callnumber,message; //号码以及信息链表
uint data PC_Value, SP_Value;     //储存中断返回点、SP初值的全局变量
uchar data Ctrl_Code;               //控制任务切换的全局变量,在中断函数里被赋值

void main()
{
int initpool;
int xdata  *pool;
int size;
AUXR=0;
size=mempoolsize;
pool=startpool;
initpool=init_mempool (pool,size);
iniRs232();  //串行口初始化
if(initpool) sendchar('1');      *************************** (1)
else sendchar('0');  

initlist(&res);    //链表初始化,程序见下.
initlist(&datastream);
initlist(&callnumber);
initlist(&message);
Ctrl_Code=0;
sendchar('2');                 *************************** (2)
...............
............
........
....


void initlist(Linklist  *l)
//构造一空链表
//input:指向链表l的指针
{
l->head=l->tail=(Link)malloc(sizeof(Lnode));
(*l).len=0;
(*l).tail->next=NULL;

}



用的是STC 89C516 RD+ 里面集成了一个1K的RAM,可以直接当外置RAM用。
我用的LARGE模式。

程序放单片机里运行时,打开串口调试,能接收到(1)处的sendchar('1');说明分配pool成功。
但是下面(2)处的sendchar('2');一直就收不到了;
悲剧啊。

请问是怎么回事?谢谢
p.s:是不是xdata速度太慢了? 不过也不会慢得这么离谱吧。

最新回复

写写,问题解决了,是原来那块板子有点问题  详情 回复 发表于 2010-5-2 14:26
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
xdata的速度决不会那么慢的,它的慢是相对于data来说的。

照你的描述,你可以先尝试一下,把红字和蓝字部分互换位置,先搞清楚,是那个地方造成了现在的结果

initlist(&res); //链表初始化,程序见下.
initlist(&datastream);
initlist(&callnumber);
initlist(&message);
Ctrl_Code=0;

sendchar('2'); *************************** (2)
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
写写,问题解决了,是原来那块板子有点问题
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表