打印

单片机C语言请教

[复制链接]
1724|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cuianbin|  楼主 | 2010-2-1 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define bitset(var, bitno)   ((var) |= (1 << (bitno)))
#define bitclr(var, bitno)   ((var) &= ~(1 << (bitno)))
这个宏定义,是用来干什么的啊,有谁能给我解释一下,谢谢了!
union {
      struct {
         unsigned b0:1;
         unsigned b1:1;
         unsigned b2:1;
         unsigned b3:1;
         unsigned b4:1;
         unsigned b5:1;
         unsigned b6:1;
         unsigned b7:1;
         }oneBit;
        unsigned char allBits;
       } myFlag;
#define CNT2_1 myFlag.oneBit.b1
#define CNT2_2 myFlag.oneBit.b2
#define CNT2_3 myFlag.oneBit.b3
#define CNT2   myFlag .allBits
第一次见这种定义方式,知道有unsigned char unsigned int 这种unsigned b0.。。啥意思?

相关帖子

沙发
elife| | 2010-2-1 14:57 | 只看该作者
前面两个名字写的很清楚,一个是设置一个字节中的一个BIT位的,一个是清除一个字节中的一个BIT位的,联合及结构是用来定义一个字节中的各个位的,这样定义后,好直接操作了。

使用特权

评论回复
板凳
lpersist| | 2010-2-1 15:02 | 只看该作者
lz是刚玩单片机吧,玩多了自然就明白了啊

使用特权

评论回复
地板
cuianbin|  楼主 | 2010-2-1 17:10 | 只看该作者
第一个问题我明白了。把后面的展开就是VAR=VAR||(0X01<<(bitno)) 和VAR=VAR&&(~(0X01<<(bitno))) 那个1的写法把我迷惑了,bitno的值只能取0-7。
第二个问题还是有些不理解,unsigned b0:1 具体含义是什么呢?结构体和共用体的用法我都明白,只是放到单片机里的型式有些奇怪。#define CNT2   myFlag .allBits,是不是定义了一个字节变量,#define CNT2_1 myFlag.oneBit. b1  CNT2_1 是只哪个字节的第一位呢?初始值是多少,是1吗?

使用特权

评论回复
5
wsypy2| | 2010-4-26 22:04 | 只看该作者
找个c语言的书看看啊,位域操作那一章,你就明白了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:来到这个论坛,乐于分享,好好学习!!

86

主题

439

帖子

5

粉丝