單片機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 ;    //獨立操作字節中的一個位
 
    }
}
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM