26 lines
968 B
C
26 lines
968 B
C
#ifndef _INTRINS_H_
|
||
#define _INTRINS_H_
|
||
|
||
/* warning: __push __pop 使用堆栈临时保存 sfr 数据,必需成对使用!
|
||
__push(x);
|
||
... // 保护代码块
|
||
__pop(x); //缺少无该语句编译不会出错,但运行错误!
|
||
*/
|
||
#define __push(x) __asm push _##x __endasm /* void _push_ (unsigned char _sfr); */
|
||
#define __pop(x) __asm pop _##x __endasm /* void _pop_ (unsigned char _sfr); */
|
||
|
||
#define _push_ __push /*兼容 keil c51*/
|
||
#define _pop_ __pop /*兼容 keil c51*/
|
||
|
||
/* 安全使用保护宏:
|
||
pushSfr(x);
|
||
... // 受保护代码块
|
||
popSfr(x); // 缺少无该语句编译出错,确保生成正确代码。
|
||
*/
|
||
#define pushSfr(x) do{\
|
||
__push(x)
|
||
|
||
#define popSfr(x) __pop(x);\
|
||
}while(0)
|
||
|
||
#endif //_INTRINS_H_
|