|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言中标志位的经典应用
+ N4 y0 X' f/ |+ o- S
. T6 R* z& Q) N e& v" h$ z" t//====标志位应用 定义联合体实体==== G8 C) d) }/ {+ q& a
typedef union uFLG{0 F1 Q; V+ ?/ D# R; e- d
2 N/ F9 t$ k. Z/ _3 b" k- [ uint8 Flg ; //定义整形数据
! U! y" [. w4 Y- V) ~: @) a4 p " T, E+ I5 \" ?! ^. E$ Y5 a
struct FLAG{ //位域定义
: Q4 W* o+ g$ [ uint8 Flg1 : 1;
$ K% ]! `- `( C+ t' S3 E& p uint8 Flg2 : 1;
& X7 w5 D. Y6 u& V) F uint8 Flg3 : 1;
/ {0 R6 S& m4 J" Y. P0 ?8 W y2 e uint8 Flg4 : 1;- _( ]- B% s( ^: Y- L
uint8 Flg5 : 1;" `; ^+ N- J! F+ V2 m6 K# k( h/ p
uint8 Flg6 : 1;4 i ~7 ], A2 @' y& g
uint8 Flg7 : 1;
! ~6 L9 U3 g' t9 J0 \ l! n4 j uint8 Flg8 : 1;
6 v! K" P) h w7 J: B3 m }tFlg; % b* l& M3 @4 m
. Y; W& ?* T( v1 a* h
}uFlg;
: |/ [& p* w6 q+ U- D, y ( v- d* n- d; ]4 Q
uFlg uF1,uF2; //定义联合体变量5 ]3 d0 u4 ]7 `: n W( g. S, E+ r
* Q% T. b Z1 d! I//-------uF1-------------------8 H; e. n( o: l
#define uFg1 uF1.Flg8 j# {* R. Y' C0 w
, A) P- w8 ]1 T$ W( p#define F_10MS uF1.tFlg.Flg18 N; i' I* [0 B) q6 w
#define F_Fls1s uF1.tFlg.Flg2
7 L$ C0 N0 T+ S% J1 l c#define F_Fls uF1.tFlg.Flg3# _+ P/ ?6 c& `0 F7 h
#define F_FlsQ uF1.tFlg.Flg4$ e2 i/ ^7 |8 p4 }! G& i+ ^
5 a: X& J' _/ |; }* c6 u% W" q3 {+ V//-------uF2-------------------2 [- o7 L* Z% @8 C
#define uFg2 uF2.Flg. ?9 o- g. ]- N9 @! \9 B% V/ C
#define F_LED1 uF2.tFlg.Flg14 |- x- e0 Q( }+ L8 c* G
#define F_LED2 uF2.tFlg.Flg20 E8 ]9 K! i3 H" c, ]. u9 ] R
#define F_LED3 uF2.tFlg.Flg3
! J# I) U$ j1 c+ H, G# O
! j3 R) Y: V% y. ]( |
! s, @% ^- J, A! d
% |4 B1 V/ g, g. N. F! D; {) K//----应用实例------
' m, |1 L) m; a( ?' h: H" B* K ! i, }7 C `7 ?9 f! M
void main(void)
1 B8 e: e4 q' U, u$ L' V{: W+ l/ ^: }( H0 `
while(1)
' e1 N$ \/ ?! @* ], @6 t { 3 t5 C ?- L% o
//F_10MS 在中断里10MS置一次1$ h$ y% M8 g C6 z
5 G' S, [, J, ~/ f( A
while(!F_10MS); //主程序10MS执行一次 3 d* I) J' H' c( \* o
F_10MS = 0 ;
) v7 i' O5 ]" t9 j: x4 C
. C* e$ J- N5 r, c Cmdkey() ;. k( ]3 O! f' w `' {$ e! ~
CmdDisplay() ;" p4 w; ]8 |3 K/ ]3 D
8 [ x. R: v! @1 G) l' K
uFg2 = 0 ; //直接操作整个字节, T' G7 U0 W& \) L
F_LED1 = 1 ; //独立操作字节中的一个位
# l6 _' g1 x+ t8 j+ f 0 k6 O4 y, v( a) Q
}+ K: s/ i1 C2 `: D
}/ u" b! p/ y( n+ ]8 `
|
|