0
点赞
收藏
分享

微信扫一扫

c51,51单片机,位操作,笔记,参考arduino


c51,51单片机,位操作,笔记,参考arduino_单片机

//******************************位显示
#define LongToBin(n) \
(\
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >> 9) & 0x08) | \
((n >> 6) & 0x04) | \
((n >> 3) & 0x02) | \
((n ) & 0x01) \
)
#define B(n) LongToBin(0x##n##l)
//*******************************位操作
//取低字节
#define lowByte(w) ((w) & 0xff)
//取高字节
#define highByte(w) ((w) >> 8)
//读一个bit
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
//写一个bit
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
//设置一个bit
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
//清空一个bit
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
//生成相应bit
#define bit(b) (1 << (b))
//******************************************位操作结束

c51,51单片机,位操作,笔记,参考arduino_51单片机_02

c = B(11111111); //相当于c = 0x27
// bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
//将c的b7 b6 b5 b4 b3 b2 b1 b0的b2设置=0
bitWrite(c,2,0);
SpiTransfer(c);
Delay500ms();Delay500ms();Delay500ms();
c = B(00000000); //相当于c = 0x27
// bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
//将c的b7 b6 b5 b4 b3 b2 b1 b0的b3设置=1
bitWrite(c,3,1);
SpiTransfer(c);



举报

相关推荐

0 条评论