在51系列单片机开发中,咱们常常喜爱用位界说,对端口某位进行操作,也能够用来做为标志。在开发msp430、avr、arm等单片机时,就不能再运用位界说了。因而给咱们带来许多不变,这儿介绍一种运用union联合相同也能完成位操作。
这儿以MSP430为例,其他单片机相似。
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;
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/255742.html