导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[KeilC51求助]<请教logu>为什么会这样?

* 25915: [KeilC51求助]<请教logu>为什么会这样?

   newleaner 
newleaner发表的帖子 

 [KeilC51求助]<请教logu>为什么会这样?
单片板子上挂了51和一块存储器。
     我写了一个小程序在上面运行,开始时在keil中选择用small模式来编译程序,在板子上可以正常运行(我在keil的项目生成时没有选择加入startup.a51文件)。
     后来改用large模式来编译,出现了一个问题:有一个函数在startup.a51文件和我的主程序中都调用了,keil的提示出现一个警告:multicall to segment。看来keil自己把startup文件加入了项目(我猜想是不是要初始化外部存储器的缘故)。于是修改startup文件里定义的堆栈起始地址和长度为我板子上的存储器情况。另外把被重复调用的函数定义为reentrant类型,编译通过了,但是运行程序时跑飞了,不理解。
      后来把反汇编文件拿出来看了一下,发现在进行reentrant型函数的模拟堆栈操作时,居然用到了mov dptr,#0ffff,后面一句看不懂,估计是把reentrant型函数的模拟堆栈搞到了#0ffff位置,但是我定义的存储器根本没有到那里啊,为什么用到了那里呢?

发表时间:2003年4月17日21:14:17

  
回复该帖

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

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

[上一篇帖子]:可能PC 指针没跑飞,还在RETI指令内
[下一篇帖子]:多谢,再问IP=02H,定义TO为高一级中断,51不是有两个中断级别吗,此时看门狗就不再复位了,而I