我的程序中需要大量的标志位,一个标志位用一个字节代替,操作起来效率还可以,但是太费空间。如何用最高的效率来实现标志位的操作,能否列举一下例子参考一下,多谢啦!
我试着用如下的位映射方法控制标志位,效率是很高,程序空间利用率也高,但是在iar的调试环境中无法监测变量的变化,非常郁闷。 // 把“位带地址+位序号”转换别名地址宏 #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) #define FlagByte 0x20001000 __no_init u32 FlagBit0 @BITBAND(FlagByte , 0); __no_init u32 FlagBit1 @BITBAND(FlagByte , 1);
|