参考 功能 不直接操作内存地址 #pragma NOAREGS在Keil中的使用含义是禁用自动分配寄存器,开发人员指定控制的寄存器。例如中断的执行使用的寄存器需要人为的指定,避免分配同样的寄存器导致数据错误。对寄存器R0到R7不直接操作寄存器地址,但可以通过寄存器名字对寄存器值修改。 相反用法的#pragma AREGS在使用 可以直接对内存地址操作,这样最大的好处就是执行效率高。缺点是可能多个函数同时操作地址导致地址出现意想不到的问题 从程序上分析 简单的理解为,NOAREGS是通过把数据先传递给一个寄存器(名称)的临时变量,然后这个寄存器(名称)存储的数据再传递给实际的地址里。