C语言中intrins.h头文件中bit是什么类型变量

C语言中intrins.h头文件中bit是什么类型变量,第1张

bit位标量是C51编译器的一旁消种物启陪扩充数据类型,利用它可罩蠢定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False

#define BIT0 0X0001 定义BIT0这个字符串等同于0x0001,就是岩握说你用BIT0就可以代表0X0001

实际上这个是因为C语言中丛仿没有位 *** 作引起的,比如 BIT1定义为0x0002,BIT2定义为0x0004

将16进制写为2进制,就是 bit0== 0b0000000000000001、bit1== 0b0000000000000010、

bit2== 0b0000000000000100,

如果进行位 *** 作就可以按这种方式进行与或非的 *** 作,比如bit0&bit1=0x0000000000000011

当你检测到这个16位宽的数据最低两位为1时说明BIT0和bit1都为1,明白否?

至于51到MSP这个就不好说了粗郑庆,多看看寄存器 *** 作,底层编程说白了就是寄存器 *** 作,不要用跳跳框框把自己圈在51里面

在学习AVR中常常发现有如类似PORTn&=~BIT(PBn)给某位置高或底的语句,那么它是如何实现的呢?皮消首贺握搭先我们禅拿可以看看BIT在ICC编译器中是如何定义的,头文件 <macros.h>中关于BIT的定义如下,

#ifndef BIT

#define BIT(x) (1 <<(x))

#endif

大家看到后便一目了然了,举个简单的例子,如PORTB&=~BIT(0x01)时,是对PINB2置低 电平。执行该语句时,首先将0x01左移一位变为0x02,之后 取反后变为0xfd在和PORTB寄存器原来的值相与在赋给PORTB,这样就保证对某位置低电位的 *** 作


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12228526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存