第5章MCS-51单片机的C语言程序设计教学资料-.pptVIP

  • 20
  • 0
  • 约2.86万字
  • 约 95页
  • 2019-01-06 发布于江苏
  • 举报

第5章MCS-51单片机的C语言程序设计教学资料-.ppt

5.9.6 C51函数的寄存器组选择 在前面单片机基本原理的介绍中,介绍了MCS-51单片机工作寄存器有4组:0组、1组、2组、3组。每组有8个寄存器,分别用R0~R7表示。那么当前程序用的是哪一组呢?修饰符using n用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。 对于using n修饰符的使用,注意以下几点: (1)加入using n后,C51在编译时自动的在函数的开始处和结束处加入以下指令。 { PUSH PSW ;标志寄存器入栈 MOV PSW,#与寄存器组号相关的常量 POP PSW ;标志寄存器出栈 } (2)using n修饰符不能用于有返回值的函数,因为C51函数的返回值是放在寄存器中的。如寄存器组改变了,返回值就会出错。 5.9.7 C51的重入函数 在标准C语言中,调用函数时会将函数的参数和函数中使用的局部变量压入堆栈保存,由于51单片机内部堆栈空间有限,因而C51没有像标准C语言那样使用堆栈,而是使用压缩栈的方法,为每一个函数设定一个空间,用于存放参数和局部变量。 一般函数中的每个变量都存放在这个空间的固定位置,当函数递归调用时会导致变量覆盖,所以就会出错。但在某些实时应用中,因为函数调用时可能会被中断函数中断,而在中断函数中可能再调用这个函数,这就出现对函数的递归调用。为解决这个问题,C51

文档评论(0)

1亿VIP精品文档

相关文档