导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:各位DX请进,

* 12203: C51编程:各位DX请进,

   hcdg 
hcdg发表的帖子 

 C51编程:各位DX请进,
工作环境是这样:MCU是8052,外部ROM和外部RAM都放在芯片ZPSD813F1上。
   写了下面一段程序:
   void FlashErase() //擦除ZPSD813F1中的FLASH,该FLASH是作外部RAM用的。
   {
       //激活ZPSD813F1的内部Flash擦除算法
       //检测ZPSD813F1的状态寄存器,等待算法执行完成
   }
   void Comm()
   {
       ...
       FlashErase();
       ...
   }

   在实际执行时发现,在调用完FlashErase()后,程序经常跑到一个不可预知的地方,当
然也可能返回到Comm()继续执行。
   我在论坛上问了一些大侠,有的说是堆栈不够用,我也不知道怎么检查,经过修改将堆
栈栈底从0x3C提高到0x23,但是问题依然没有解决。而且在程序中有些地方函数的调用深度
彼此处还深,也没出现问题。后来我将FlashErase()改称宏的形式,问题依然存在。
   这是否与此有关:FlashErase()调用芯片ZPSD813F1的内部算法,而程序代码也在该芯片
内。这是否有冲突。
   为了发现问题所在,我在FalshErase()中,在激活ZPSD813F1的内部算法后,在等待之前
和等待期间我都输出了一些提示信息,但每次执行时,都没有发现这些提示信息,然后程序
就返回到Comm()继续执行或着返回到一个不可预知的地方。理论知识有限,对此我不知道怎
么解释。
   各位有经验有理论的大侠们给点提示和展开讨论一下吧。


发表时间:2002年10月11日14:29:00

  
回复该帖

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

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

  12208.[详细]没有大侠对此熟悉吗?
摘要:......(无内容)
- [hcdg][988次] 2002年10月11日

[上一篇帖子]:没人回帖????没人回帖我要哭了!就没高手救救我吗???
[下一篇帖子]:希望老古先生和各位前辈能帮我看一下这个问题.谢谢!