Keil C51对C语言的关键词扩展之十八:using

8051单片机内部RAM的前32字节分为4组寄存器,using关键字用于指定函数使用的寄存器组。在中断服务函数中使用,能避免保存和恢复所有寄存器,提高运行效率。using函数会保存和恢复指定寄存器组,但不能返回bit类型值。
摘要由CSDN通过智能技术生成

在8051系列单片机中,内部ram的前32个字节被分为4组,每组8个寄存器。每组的8个寄存器名字都为R0-R7。通过设置PSW寄存器的两个位,可以选择使用4组寄存器中的哪一组。

寄存器组在处理中断或者使用实时操作系统时非常有用,可以在进入中断或者切换任务时使用不同寄存器组,而不用把8个寄存器的内容保存到堆栈。在退出中断或返回原任务时,只需切换回原来的寄存器组即可。

指定一个函数使用的寄存器组:

void rb_function (void) using 3
  {
  .
  .
  .
  }
using后跟数字0-3,不允许使用符号表达式指定代替该数字常量。只有定义函数时才可使用using关键词,在做函数原型声明时不允许使用using关键词。

using声明的函数具有以下特征:

1)函数入口处,当前使用的寄存器组被保存到堆栈;

2)指定的寄存器组被设置;

3)函数退出前,原来的寄存器组被恢复;

下面展示了using的用法,请注意生成的汇编程序中函数入口、出口处的代码:

C程序:

   1
   2         extern bit alarm;
   3         int alarm_count;
   4         extern void alfunc (bit b0);
   5
   6         void falarm (void) using 3  {
   7   1           alarm_count++;
   8   1           alfunc (alarm = 1);
   9   1         }


生成的汇编程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值