程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 單片機C語言中標志位的經典應用

單片機C語言中標志位的經典應用

編輯:關於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 ;	//獨立操作字節中的一個位

	}
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved