KEIL C51使用技巧.docVIP

  • 16
  • 0
  • 约6.85千字
  • 约 8页
  • 2018-04-18 发布于河南
  • 举报
KEIL C51使用技巧

函数的递归调用和再入函数 函数类型 函数名 (形参表)[reentrant] 再入函数可被递归调用,无论何时,包括中断服务函数在内的任何函数都可调用再入函数。与非再入函数的参数传递和局部变量的存储分配方式不同,Cx51编译器为再入函数生成一个模拟栈,通过其来完成参数传递和存放局部变量。 模拟栈所在的存储器空间根据再入函数存储器模式的不同,可以是DATA、PDATA、XDATA存储器空间。当程序中包含有多种存储器模式的再入函数时,编译器为每种模式单独建立一个模拟栈并独立管理各自的栈指针。 对于再入函数有如下规定: 再入函数不能传送bit类型的参数,也不能定义一个局部位变量,再入函数不能包括位操作和8051系列单片机的可位寻址区 与PL/M51兼容的函数不能具有reentrant属性,也不能调用再入函数 编译时存储器模式基础上为再入函数在内部或外部存储器中建立一个模拟堆栈区,称为再入栈。在small模拟下再入栈位于idata区,在compact模式下再入栈位于pdaa区,在large模式下再入栈位于xdata区。再入函数的局部变量及参数都被放入再入栈中,从而使再入函数可进行递归调用。而非再入函数的局部变量被放在再入栈外的暂存区内,如对其进行递归调用,则上次调用时使用的局部变量数据将被覆盖。 在同意 个程序中可定义或使用不同存储器模式的再入函数,任意模式的再入函数不能调用不同模式的再入

文档评论(0)

1亿VIP精品文档

相关文档