单片机C语言中标志位的经典应用
时间:01-20 15:26 阅读:994次
*温馨提示:点击图片可以放大观看高清大图
简介:本文为大家提供一个单片机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 ; //独立操作字节中的一个位
}
}