WINAVR的2006-01-25版本中
如果包含了sfr_defs.h头文件
#i nclude <avr/sfr_defs.h>
可以使用以下宏:
宏: _BV(bit)
作用: bit位置位
等价C语句: 1 << bit
宏: bit_is_set(sfr,bit)
作用: 返回char型的特殊寄存器sfr的bit位的值
bit=1,返回非0值(T);bit=0,返回0(F)
等价C语句: _SFR_BYTE(sfr) & _BV(bit)
宏: bit_is_clear(sfr,bit)
作用: 返回char型的特殊寄存器sfr的bit位的取反值
bit=0,返回非0值(T);bit=1,返回0(F)
等价C语句: !(_SFR_BYTE(sfr) & _BV(bit))
宏: loop_until_bit_is_set(sfr,bit)
作用: 执行循环体,直到特殊寄存器sfr的bit位置1
等价C语句: do { } while (bit_is_clear(sfr, bit))
宏: loop_until_bit_is_clear(sfr,bit)
作用: 执行循环体,直到特殊寄存器sfr的bit位清零
等价C语句: do { } while (bit_is_set(sfr, bit))
如果包含了deprecated.h头文件(已经不推荐使用,可以参考后自己定义)
#i nclude <compat/deprecated.h>
可以使用以下宏:
宏: sbi(port,bit)
作用: 端口的bit位置1
等价C语句: port |= (1 << (bit))
宏: cbi(port,bit)
作用: 端口的bit位清零
等价C语言: port &= ~(1 << (bit))