MSP430中用位段定義自己的標(biāo)志
1.位段的定義
本文引用地址:http://m.butianyuan.cn/article/201611/316579.htm關(guān)于位段的定義,就不多說了,去查閱任何一本C語言的書都可以查到
2.微處理器中標(biāo)志位的定義
對(duì)于MSP430,是16位處理器,可以一次讀取16位的數(shù)據(jù),標(biāo)志位也可定義為16位的。
下面的定義將位段和共用體結(jié)合在一起用,因?yàn)楣灿皿w的長(zhǎng)度取決于最長(zhǎng)成員的長(zhǎng)度,因此,可以在共用體中聲明一個(gè)int成員,對(duì)它清0則可以清除整個(gè)標(biāo)志字(覆蓋)。
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.標(biāo)志字的引用舉例
#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)//注意:共用體不能作為函數(shù)參數(shù),也不能作為返回值,但是可以使用指向共用體變量的指針
{
in_mode -> bool.b0=1;
in_mode -> bool.b5=1;
/*也可這樣寫
in_mode -> BYTE|=0x21;*/
}
/********************************************/
void main(void)
{
my_Flag.BYTE=0X00;//整個(gè)標(biāo)志字清0
while(1)
{
mode_task(&my_Flag);
}
}
評(píng)論