|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言中标志位的经典应用& q0 D% i8 A) S" X1 J
, M, j6 w# `& M- b. @) k5 `//====标志位应用 定义联合体实体====
% ^, O$ l6 O& V( t8 |% Qtypedef union uFLG{
( h, r, f7 E% n$ P
) T% c6 t, ], G0 W9 Q) D# C uint8 Flg ; //定义整形数据' m/ W! s6 D# L; p B
- e7 t4 ?# o7 |7 B. \5 `
struct FLAG{ //位域定义
R. X7 W3 Q/ P9 p- o2 Q& G uint8 Flg1 : 1;
, E, W5 r2 G E; \ | uint8 Flg2 : 1;
b3 c3 [0 K0 r, v& h0 O uint8 Flg3 : 1;7 F6 P: {3 c. t0 b3 t
uint8 Flg4 : 1;% ^ l" H0 o& g. n' ?) J2 V
uint8 Flg5 : 1;5 Z/ R8 w# H$ f2 z
uint8 Flg6 : 1;6 n) y) o; M3 D0 J6 `1 Q9 y( a% g3 ?& R
uint8 Flg7 : 1;
9 c7 O9 B+ e) m ] b uint8 Flg8 : 1;
3 Y' @" q+ p& } ^9 Q9 x }tFlg;
' @1 n" S; z& e6 ~* R6 ~/ z/ N
% _; m n* {- I" ^" a5 a' X. F. i9 r}uFlg;5 @( f. m+ u A* t, y7 y
+ ? n' p! P2 n9 _; duFlg uF1,uF2; //定义联合体变量# ?+ f/ q4 M' ^) k0 a
9 w t5 c9 h4 K, a+ T, S, y7 r4 j
//-------uF1-------------------
3 s6 g% J: Y( o6 n1 p. w#define uFg1 uF1.Flg( u, {5 D) k# z' Q; ^, m
- i5 ~3 {5 z: f% g/ m8 `6 _" M0 S0 W
#define F_10MS uF1.tFlg.Flg1. N- Q B8 e( H: W$ M7 k( W/ m
#define F_Fls1s uF1.tFlg.Flg2
5 G0 Z* J) p7 Y7 _% ?, B#define F_Fls uF1.tFlg.Flg32 m- `% D/ K8 B
#define F_FlsQ uF1.tFlg.Flg4; p: E$ i- @& R0 C: p
0 m* e/ _7 }+ ^//-------uF2-------------------$ K& o( [' M' T; k5 J+ y% M$ e# v
#define uFg2 uF2.Flg
; _3 P5 A2 v5 ]3 b" i#define F_LED1 uF2.tFlg.Flg1
1 _! K$ D" U: Q" f ?+ X" j#define F_LED2 uF2.tFlg.Flg2; G+ N8 w- a% j: H% u
#define F_LED3 uF2.tFlg.Flg3: p+ F( }# Q5 u$ J' y+ A! b
# F2 I, L. {! z" t' i- D / C8 V1 X- v4 m' {! e3 j1 i
D# y6 ~1 p) i4 c, z8 F4 r! _) u1 {0 R//----应用实例------
' K8 ]3 F- P6 o' @, n y
8 X, j5 p6 E( D0 vvoid main(void)
% W8 \1 i8 _: L' U{! A6 D( E5 N9 a* t$ g; L
while(1)
$ N. \9 m6 C3 V5 X3 ] { ( _8 Y0 w" _ d2 B( j8 u1 D
//F_10MS 在中断里10MS置一次1- M8 p( {/ U; n$ [# A: h- G& U
5 K- K* i0 u0 S6 K- Y
while(!F_10MS); //主程序10MS执行一次 ) j8 d2 [ o- ~7 w
F_10MS = 0 ; ; Q& U, j- P2 N0 N) H9 \0 X( D
7 k: l; L2 s8 R3 C Cmdkey() ;
1 D; O! U G" V, I0 ? CmdDisplay() ;- g$ y0 M' w; \) F/ q: C4 P
% H8 k6 ?* {, R% C) C. ^ uFg2 = 0 ; //直接操作整个字节
4 f( f2 x4 e5 |7 }) d0 k! x) L F_LED1 = 1 ; //独立操作字节中的一个位
1 w# e/ C" j! A b / P" F; [$ b @
}2 I9 U. s3 |- Y1 R3 ^0 s
}
- h7 _& l- O( ?; f/ V |
|