IAR-C有着强大的软件仿真功能,但其中的寄存器位操作定义却十分烦琐,并且编译后生成的ASM代码冗余较多,针对该问题,版主自已定义一个位操作定义的方法,初学者可参考定义,并且该种方法可应用于所有寄存器位操作定义。
共实现置位--Set_Bit, 清位--Clr_Bit,取反位Com_Bit,测试位Test_Bit四种位操作功能,并且每条位操作定义仅需一条3字节的ASM指令序列即可,简便直接。
//*****************************************************
//P00位操作定义
#define Set_P00 (P0 = P0 | 0x1)
#define Clr_P00 (P0 = P0 & ~0x1)
#define Com_P00 (P0 = P0 ^ 0x1)
#define Test_P00 (P0 & 0x1)
//P01位操作定义
#define Set_P01 (P0 = P0 | 0x2)
#define Clr_P01 (P0 = P0 & ~0x2)
#define Com_P01 (P0 = P0 ^ 0x2)