在51系列單片機開發(fā)中,我們經(jīng)常喜歡用位定義,對端口某位進行操作,也可以用來做為標(biāo)志。在開發(fā)msp430、avr、arm等單片機時,就不能再使用位定義了。因此給我們帶來很多不變,這里介紹一種使用union聯(lián)合同樣也能實現(xiàn)位操作。這里以MSP430為例,其他單片機類似。
本文引用地址:http://m.butianyuan.cn/article/201611/322589.htm1.用聯(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;
}
評論