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

 *第5424篇: C51编程:各位DX请进,

  
楼 主:hcdg 2002年10月11日14:29
 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()继续执行或着返回到一个不可预知的地方。理论知识有限,对此我不知道怎
么解释。
   各位有经验有理论的大侠们给点提示和展开讨论一下吧。

  
2楼:hcdg 2002年10月11日16:04
 没有大侠对此熟悉吗?

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:初学者:请教:AT89C2051不工作

[下一篇主题]:C51编程:各位大侠帮帮忙好吗??对RTL8019的C51编程小弟不甚了解,望各位指点一下!!!