|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言中标志位的经典应用' y9 T5 o* F3 v* d4 e$ r, B) z
7 o8 Z' N- _) U& \% E; w2 g
//====标志位应用 定义联合体实体====) ]# ]9 [0 o, D* u4 a( t
typedef union uFLG{
) s; o8 b7 H- a9 r 9 Q# E T& S4 Q2 z
uint8 Flg ; //定义整形数据
+ g8 K/ _. R" t" K+ r, m 0 g# M Q# U+ H# U2 B: W, P7 y
struct FLAG{ //位域定义% a8 p9 @; w& ?+ O/ @
uint8 Flg1 : 1;
3 Y/ r/ Q$ N% t/ Q8 Q$ X; w uint8 Flg2 : 1;
; h- q4 U5 d( Y uint8 Flg3 : 1;
- S5 d* Z+ u9 ] {# m6 k3 l, Z uint8 Flg4 : 1;
0 @" p5 y- e: H uint8 Flg5 : 1;
, e( i2 F) ~' r+ w9 h+ k uint8 Flg6 : 1;
9 W' m# t! z9 j uint8 Flg7 : 1;9 J7 K1 D, D& r$ g: \8 t
uint8 Flg8 : 1;
$ _" W$ ]" H4 ~* ]# A! }( ` }tFlg; * o: M2 E4 J5 a8 ^* @
* d8 f, T4 l) V4 ~, ]/ R
}uFlg;" G7 q2 L* q- \9 a6 ?2 t; P
, X9 P/ K8 E/ D/ k- I) |" `" YuFlg uF1,uF2; //定义联合体变量
" d* H) W- o) z . Y1 \( c* D9 P# F( j; d$ Q
//-------uF1-------------------
+ Q% B$ [+ I; _5 _! m#define uFg1 uF1.Flg7 h: C; q# ~% {& K
, f$ L# d: a% [. u#define F_10MS uF1.tFlg.Flg1# ?" M5 \ T* N) E
#define F_Fls1s uF1.tFlg.Flg2
* X4 M0 g1 l y1 F. m#define F_Fls uF1.tFlg.Flg3
2 _( z( F) b$ Y# p#define F_FlsQ uF1.tFlg.Flg40 m# N1 W4 a. _
3 m" `8 Y6 I2 J$ N! b//-------uF2-------------------$ b* n" M4 k# n6 |8 ?$ ]3 }
#define uFg2 uF2.Flg
# z8 L: C# e' v" _1 u0 {#define F_LED1 uF2.tFlg.Flg1! l0 Z8 {, ]$ |2 l D, d5 n
#define F_LED2 uF2.tFlg.Flg23 }0 ~* T" S6 L# w( j
#define F_LED3 uF2.tFlg.Flg3. P `. h* Q+ c5 ?6 A; ^
9 n0 I% x* ~/ H7 {9 H3 y 1 R: @% S) j5 A' E) S* I
6 `. t# H& \% E* r: q
//----应用实例------; a3 K: g4 s4 V; c0 u2 ?
( K2 N& z+ R% {- r+ h. [* U& q
void main(void)
/ v E; ], T; u& d' K! Q) ^{) e3 W4 K9 z6 W
while(1)
6 j7 w: d. ]* x2 b5 `- R0 h {
) t' O/ y r2 @: c; |" ` k //F_10MS 在中断里10MS置一次1- n y! @: M* W
' F" m' s! K$ C/ F while(!F_10MS); //主程序10MS执行一次 3 B* x0 v! R5 t' D. ?/ F; s: _; l
F_10MS = 0 ; 4 u+ {: N5 F# h0 D6 V) ]
% M( t, V9 y9 E( W) F Cmdkey() ;% O- t3 G# p/ A& Z5 U
CmdDisplay() ;
' R8 Q Q. |8 K" o! i r& Q7 ]% X/ l3 f; p8 Q
uFg2 = 0 ; //直接操作整个字节
7 L- e1 \0 ^2 ^3 D9 P" B z F_LED1 = 1 ; //独立操作字节中的一个位
" g( ?0 r& S" x
* C- V+ ^9 y# G! x# { }5 C3 y; f5 u2 {( e, W
}- o5 L& w ~" O S9 i5 V
|
|