单片机C语言中标志位的经典应用

/*
本例程是C语言的位域操作示例
这里为什么位域结构体与联合体一起使用?
-->因为这样定义后,即可以单独使用标志位 也可同时使用整个字节数据

主要应用:单片机C语言

好处:用标志位可以节省RAM空间 操作灵活 执行速度快

 */
//====标志位应用 定义联合体实体====
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 ;    //独立操作字节中的一个位
 
    }
}
 

猜你喜欢

转载自www.cnblogs.com/UPUPDay2152/p/10584559.html