/* 本例程是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 ; //獨立操作字節中的一個位 } }