第五章单片机(八、51-C语言编程)资料.ppt

可重入函数 可重入函数可以在同一个时刻由多个进程共享。当一个进程正在执行一个可重入函数,另一个进程可以中断该进程,并可以开始执行同一个可重入函数,而不影响函数的运行结果。 ANSI C 语言中,调用函数时会把函数的参数和函数中使用的局部变量入栈。 因为8051 内部堆栈空间的限制,为了提高效率,C51 没有提供这种堆栈,而是提供一种压缩栈。每个函数有一个给定存储空间,用于存放局部变量。函数中的每个变量都存放在这个空间的固定位置。当递归调用该过程时会导致变量被覆盖,所以通常情况下CX51中的函数是不能重入的。 为此必须使用reentrant函数属性来声明函数是可重入的。格式如下: 函数类型 函数名(形式参数列表) reentrant 与不可重入函数的参数传递和局部变量的存储分配方法不同,C51编译器为再入函数生成一个模拟栈,通过这个模拟栈来完成参数传递和存放局部变量。这样每次函数调用时的局部变量都会被单独保存,再入函数一般占用较大的内存空间,运行起来也比较慢,并且不允许传递bit 类型的变量,也不能定义局部位变量。 可重入函数经常在实时应用系统中应用,也可在中断函数和非中断函数同时调用同一个函数时使用。 规定函数使用的寄存器组 8051单片机的内部存储器的低32个字节被划分成4个寄存器组,每个寄存器组8个寄存器。寄存器组可以通过PSW中的两个位进行选择,任何时刻仅有一个寄存器组处于

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档