新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 聯(lián)合體union在單片機位定義時的妙用

聯(lián)合體union在單片機位定義時的妙用

作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
在51系列單片機開發(fā)中,我們經(jīng)常喜歡用位定義,對端口某位進行操作,也可以用來做為標(biāo)志。在開發(fā)msp430、avr、arm等單片機時,就不能再使用位定義了。因此給我們帶來很多不變,這里介紹一種使用union聯(lián)合同樣也能實現(xiàn)位操作。

這里以MSP430為例,其他單片機類似。

本文引用地址:http://m.butianyuan.cn/article/201611/322589.htm

1.用聯(lián)合體做位標(biāo)志

__no_initvolatile union {
uint8 temp;
struct
{
uint8bit0:1;
uint8bit1:1;
uint8bit2:1;
uint8bit3:1;
uint8bit4:1;
uint8bit5:1;
uint8bit6:1;
uint8bit7:1;
}temp_bit;
}var;

#definea_flagvar.temp_bit.bit0;

定義了上面的聯(lián)合體,我們就可以對a_flag進行位操作,進行讀寫,置位。

2.用聯(lián)合體定義端口或者寄存器

__no_init volatile
union
{
unsigned char IOPORT;
struct
{
unsigned char Way: 1;
unsigned char Out: 1;
};
} @ 8;

void Test(void)
{
IOPORT = 0;
Way = 1;
Out = 1;
}



評論


技術(shù)專區(qū)

關(guān)閉