单片机C语言中标志位的经典应用
扫描二维码
随时随地手机看文章
//====标志位应用 定义联合体实体====
typedef union uFLG{
 
    uint8 Flg ;     //定义整形数据
 
    struct FLAG{        //位域定义
        uint8   Flg1   : 1;
        uint8   Flg2   : 1;
        uint8   Flg3   : 1;
        uint8   Flg4   : 1;
        uint8   Flg5   : 1;
        uint8   Flg6   : 1;
        uint8   Flg7   : 1;
        uint8   Flg8   : 1;
    }tFlg;  
 
}uFlg;
 
uFlg uF1,uF2;   //定义联合体变量
 
//-------uF1-------------------
#define uFg1            uF1.Flg
 
#define F_10MS          uF1.tFlg.Flg1
#define F_Fls1s         uF1.tFlg.Flg2
#define F_Fls           uF1.tFlg.Flg3
#define F_FlsQ          uF1.tFlg.Flg4
 
//-------uF2-------------------
#define uFg2                uF2.Flg
#define F_LED1          uF2.tFlg.Flg1
#define F_LED2          uF2.tFlg.Flg2
#define F_LED3          uF2.tFlg.Flg3
 
 
 
//----应用实例------
 
void main(void)
{
    while(1)
    { 
        //F_10MS 在中断里10MS置一次1
 
        while(!F_10MS);  //主程序10MS执行一次 
        F_10MS = 0 ; 
 
        Cmdkey() ;
        CmdDisplay() ;
 
        uFg2 = 0 ;      //直接操作整个字节
        F_LED1 = 1 ;    //独立操作字节中的一个位
 
    }
}

			



		 