义隆单片机C语言中调用汇编 这几条如何读解?(祥细)谢谢!
#defineDISI()_asm{disi}//禁止总中断#defineWDTC()_asm{wdtc}//清看门狗#defineNOP()_asm{nop}//延时一...
#define DISI() _asm{disi} //禁止总中断
#define WDTC() _asm{wdtc} //清看门狗
#define NOP() _asm{nop} //延时一个指令周期
#define ENI() _asm{eni} //使能总中断
#define SLEP() _asm{slep} //系统掉电
#define CONTR() _asm{contr}\
_asm{mov %P_scale,a} //读CONT寄存器
#define CONTW(IM_Value) _asm{mov a,@IM_Value}\
_asm{contw} //写CONT寄存器 展开
#define WDTC() _asm{wdtc} //清看门狗
#define NOP() _asm{nop} //延时一个指令周期
#define ENI() _asm{eni} //使能总中断
#define SLEP() _asm{slep} //系统掉电
#define CONTR() _asm{contr}\
_asm{mov %P_scale,a} //读CONT寄存器
#define CONTW(IM_Value) _asm{mov a,@IM_Value}\
_asm{contw} //写CONT寄存器 展开
2个回答
展开全部
这个是一种宏定义,
比如第一条:#define DISI() _asm{disi} //禁止总中断
在后续的C语言代码中,如果遇到DISI()字符串,编译器会先将其替换为 _asm{disi}
而_asm{} 表示执行大括号内的汇编代码。
例如:
程序代码(示例无实际意义)为:
........
a = b + c;
DISI();
b = a + c;
编译器会将其变为:
.......
a = b + c;
_asm { disi }
b = a + c;
.........
然后再进行编译!
_asm { disi } 表示禁止总中断。
比如第一条:#define DISI() _asm{disi} //禁止总中断
在后续的C语言代码中,如果遇到DISI()字符串,编译器会先将其替换为 _asm{disi}
而_asm{} 表示执行大括号内的汇编代码。
例如:
程序代码(示例无实际意义)为:
........
a = b + c;
DISI();
b = a + c;
编译器会将其变为:
.......
a = b + c;
_asm { disi }
b = a + c;
.........
然后再进行编译!
_asm { disi } 表示禁止总中断。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询