|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言中标志位的经典应用% {: K% @* ^6 f/ \; d
1 t# _, t5 l1 V$ p, J//====标志位应用 定义联合体实体====
0 b7 F; w- e) j0 V$ I0 _) L" Etypedef union uFLG{2 c" s8 H9 W6 d X5 T/ C( A
- A; k5 d" v7 J9 k. Q }- d, p uint8 Flg ; //定义整形数据9 B& t) `- i' j0 h+ \8 h' P5 ^
' P3 R+ ?* b4 I+ b7 D. L: M struct FLAG{ //位域定义7 K: g& [+ I: A3 } }% S
uint8 Flg1 : 1;
2 S/ q. u. r* F+ Q1 P3 g6 F& i0 K6 S uint8 Flg2 : 1;
& H) q) A9 s2 b2 b+ q uint8 Flg3 : 1;& r4 v2 n, X- ~ ^" d5 f) [
uint8 Flg4 : 1;
8 Z6 x: Z5 ^7 ^ [ uint8 Flg5 : 1;
1 U: H8 s$ F& c* x8 {! v uint8 Flg6 : 1;" r8 Q" u! e( ]9 f
uint8 Flg7 : 1;$ }% C6 s6 i/ Y7 J* j: }# m
uint8 Flg8 : 1;
3 |. J p5 k: ]; E& Z8 O! R$ J }tFlg;
* y2 K$ Z2 L5 L$ c$ ~( |
6 J: D# E2 N* l( s8 c}uFlg;+ y; y( P. c5 \8 [* `. [
; ^2 [ c* }& `uFlg uF1,uF2; //定义联合体变量
; G# V, J, `! m6 h7 E5 j+ k/ a \
1 C" h! c6 q* [//-------uF1-------------------
8 F+ d9 Y' c4 d5 o7 c: F, x#define uFg1 uF1.Flg
, b" Y0 n$ G+ Z" L - j* {- h7 J- ^; C8 A0 W1 ^, V
#define F_10MS uF1.tFlg.Flg1
; d- t% ?" ^, T! ]. e#define F_Fls1s uF1.tFlg.Flg2
& Q1 o& F% z8 _1 L$ A#define F_Fls uF1.tFlg.Flg3! c6 S& A5 A$ O. `) y6 h$ }
#define F_FlsQ uF1.tFlg.Flg4, z% g1 G; f' z* a
) T! z; V }8 v z4 [- W//-------uF2-------------------
" U; S( a# H4 m4 `3 K#define uFg2 uF2.Flg: b8 r* S& q5 M
#define F_LED1 uF2.tFlg.Flg1
" ]$ B: ]! S+ \! s, q#define F_LED2 uF2.tFlg.Flg25 ~( |# y7 F' g7 D- i! l
#define F_LED3 uF2.tFlg.Flg3& p" Z2 |' a' K7 @' G: n
- s/ u3 c2 \7 L; \, F
, S! ^- p" T- M) N! S2 f 2 l. w! ^/ R" ]! B/ k+ E! e6 {" K* v
//----应用实例------5 F, M) A) N# i$ a7 \ [
* J+ s- Z5 ]# n. z5 G2 `
void main(void)$ n$ a3 c+ b) a* [* m* R
{5 O/ ~( P4 N0 K$ g& O* n7 v
while(1); G4 D* }% j- G! S
{
! _! R% T* H: ~5 m$ u' E //F_10MS 在中断里10MS置一次1' e! n A* H$ u; ~$ G1 Q& X
4 U" _! j8 ?7 }& p7 p) _ ~/ Y, F6 n
while(!F_10MS); //主程序10MS执行一次 j6 C5 B) k8 `1 B0 p
F_10MS = 0 ;
5 e2 r) h9 F# K. G) p & ^. H7 H* `8 H* C7 s! j4 N
Cmdkey() ;! A5 J' I; a1 l: r0 n
CmdDisplay() ;
' Y$ k! j3 u6 d& [9 H4 w0 S
6 Y8 W' ~" ]" u; \/ L uFg2 = 0 ; //直接操作整个字节; c6 o$ s/ n; ]& Y6 b
F_LED1 = 1 ; //独立操作字节中的一个位
( z& ]* b, Q) r) F- S
) D4 ^/ }6 S3 D+ d }" ? j3 u8 l# H9 B
}! @8 U4 ]' k3 Z/ R. q9 z
|
|