×
单片机 > 单片机程序设计 > 详情

51单片机与递归的问题

发布时间:2020-05-29 发布时间:
|

在C51中,中断和非中断函数调用同一个函数报警就是RECURSIVE CALL TO FUNCTION。


标准C语言是在堆栈中动态生成局部变量空间,所以可以递归的。


51单片机太弱了,为了提高运行效率,C51采用静态分配局部变量的方式,所以不可递归。


被中断和非中断函数调用的函数,如果在非中断状态运行,发生中断后,局部变量被破坏,中断结束后再执行就完全错误了,这个跟不能递归的原理是一样的,所以Keil也把他列为RECURSIVE CALL TO FUNCTION。


解决方式:在这个公用的函数加reentrant修饰为可重入的。


关键字:51单片机  递归  堆栈 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址