原创 单片机在仿真时出现的一个小问题

2011-3-14 10:17 2500 7 7 分类: MCU/ 嵌入式

     

  在调试一个reentrant 重入函数时,在仿真时出现了(编译通过了)

error 65 :access  violation at I: oxFE: no ‘write’permission 的错误提示,

仿真得不到应有的结果,而且编译又通过了,进过仔细的检查程序,程序时没有错误的,奇怪了,到底时哪里出了问题呢?

        东查资料,西查资料,发现啊,由于单片机的RAM数量较小,在默认条件下,C51并不支持函数的重入。我想是不是在程序运行中,占用的中间变量太多了呢,Access Violation是非法访问的意思,也就是说,程序在运行无法访问0xFE这个地址,是啊,我Keil工程设置的是AT89C51,它的RAM只有256个字节,而且在Target这个选项卡里,Memory Model又选择的是 Small模式的(表示所以变量都在单片机内部的RAM中)当然无法访问超过它容量的空间了,问题找到了,只要在Memory Model选择合适的RAM空间容量就行了。

        这次的调试,我得出了一个教训,用Keil调试出现时,必须注意工程的设置问题,编译通过后,在仿真出现的问题往往时工程的设置又问题了。还要注意C51中需要大容量存储空间的变量还有会产生占用临时的大容量的语句,比如数组,函数的重入等。

09/10/22  

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条