新聞中心

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

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

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

這里以MSP430為例,其他單片機(jī)類似。

本文引用地址:http://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)合體,我們就可以對(duì)a_flag進(jìn)行位操作,進(jìn)行讀寫,置位。

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;
}



評(píng)論


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

關(guān)閉