久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 聯合體union在單片機位定義時的妙用

聯合體union在單片機位定義時的妙用

作者: 時間:2016-11-28 來源:網絡 收藏
在51系列單片機開發中,我們經常喜歡用位定義,對端口某位進行操作,也可以用來做為標志。在開發msp430、avrarm等單片機時,就不能再使用位定義了。因此給我們帶來很多不變,這里介紹一種使用union聯合同樣也能實現位操作。

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

本文引用地址:http://cqxgywz.com/article/201611/322589.htm

1.用聯合體做位標志

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

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

2.用聯合體定義端口或者寄存器

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



評論


技術專區

關閉