您的位置 首页 分销

MSP430顶用位段界说自己的标志

在编写程序中,经常需要自己定义标志(位)。如果每个标志占用一个字节,会占用很大空间,可以用位段来实现,把若干个标志集中在一个存储…

在编写程序中,常常需求自己界说标志(位)。假如每个标志占用一个字节,会占用很大空间,能够用位段来完成,把若干个标志会集在一个存储单元中。

1.位段的界说

关于位段的界说,就不多说了,去查阅任何一本C言语的书都能够查到

2.微处理器中标志位的界说

关于MSP430,是16位处理器,能够一次读取16位的数据,标志位也可界说为16位的。

下面的界说将位段和共用体结合在一起用,由于共用体的长度取决于最长成员的长度,因而,能够在共用体中声明一个int成员,对它清0则能够铲除整个标志字(掩盖)。

union FLAG

{

unsigned int BYTE;

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;

unsigned b8:1;

unsigned b9:1;

unsigned b10:1;

unsigned b11:1;

unsigned :4;

}bool;

}myFlag;

2.标志字的引证举例

#define change_bit myFlag.bool.b0

#define sov_bit myFlag.bool.b1

#define tb0_bit myFlag.bool.b4

#define tb1_bit myFlag.bool.b5

#define tb2_bit myFlag.bool.b6

#define tb3_bit myFlag.bool.b7

#define tv0_bit myFlag.bool.b8

#define tv1_bit myFlag.bool.b9

#define tv2_bit myFlag.bool.b10

#define tv3_bit myFlag.bool.b11

/************************************************

void mode_task(union FLAG *in_mode)//留意:共用体不能作为函数参数,也不能作为返回值,可是能够运用指向共用体变量的指针

{

in_mode -> bool.b0=1;

in_mode -> bool.b5=1;

/*也可这样写

in_mode -> BYTE|=0x21;*/

}

/********************************************/

void main(void)

{

my_Flag.BYTE=0X00;//整个标志字清0

while(1)

{

mode_task(&my_Flag);

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/274325.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部