|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机C语言中标志位的经典应用
2 G" A" C$ k5 Y1 j2 |9 h- v& C- z9 F6 [1 G! H7 u j# \
//====标志位应用 定义联合体实体====! m# l# v9 M' R
typedef union uFLG{6 \" ?1 R) F+ m& ^1 Q4 g0 F
! F2 F2 T) N3 \6 b4 r
uint8 Flg ; //定义整形数据7 [2 r( z$ |9 c% }/ g
5 b6 w5 L# f1 o% t5 j+ u7 t! h. f
struct FLAG{ //位域定义: w5 |: Y0 b$ R( E
uint8 Flg1 : 1;
: U3 p: ~7 ^5 H! r$ T uint8 Flg2 : 1;4 M% n p0 s' A+ S2 o. N
uint8 Flg3 : 1;
/ @' ]7 O1 \. N" O- o8 t- P uint8 Flg4 : 1;. X( F2 j: P) i7 D- d5 u
uint8 Flg5 : 1;# { [' W7 b6 C4 @, s4 W# I- i. V5 g6 V
uint8 Flg6 : 1;! t2 ~, ~: T' Q
uint8 Flg7 : 1;
( @. c; R# O: C5 h7 l uint8 Flg8 : 1;
. N7 F3 J& a7 d }tFlg; 1 p5 }/ H9 y( S$ k! X) F8 t; r" W$ A+ u# o
& A2 v7 g1 g+ y6 O6 e0 ^
}uFlg;
: y0 v. R v9 C' E3 {! M 9 ?+ @2 C* L9 ]; u. W
uFlg uF1,uF2; //定义联合体变量9 E* P& C' L$ A3 E+ Z7 g
! T! C: X8 g) x+ M& q
//-------uF1-------------------
7 a$ W( a' ?1 T8 L# \% c. _#define uFg1 uF1.Flg
/ ?6 I0 ? w% O* A' `
7 B: \- E$ G2 i9 z" N+ q+ u#define F_10MS uF1.tFlg.Flg1+ `3 f. N1 z# O. m
#define F_Fls1s uF1.tFlg.Flg28 a5 y; H. ]! O+ ~, ^& \' |" m
#define F_Fls uF1.tFlg.Flg3
% S9 ?; J& L# g( T% V4 [ x7 m#define F_FlsQ uF1.tFlg.Flg4
5 e- R1 e H/ N4 h, G5 C$ X! h1 A
# u# L4 z# o" R4 D3 N//-------uF2-------------------
, O2 i3 N7 l' U#define uFg2 uF2.Flg
+ S5 {& R8 K/ B; ]! D#define F_LED1 uF2.tFlg.Flg1( n/ Z1 [9 g- j/ i
#define F_LED2 uF2.tFlg.Flg2
, n* Y7 q- P! C# c; n( z" {#define F_LED3 uF2.tFlg.Flg3
$ S5 v3 T S i+ H: [; `% X
9 l/ J0 X7 E+ w5 w% F- ]/ G# \0 h! x 9 N! Y( Q5 s, A2 P
* D5 {2 N! o, _//----应用实例------
8 n( {1 v+ @6 T( X- J * m! F8 a( ?, j5 {7 a% q
void main(void)
, u9 T& n3 b. `) H$ i9 _: s: M{
' O j/ Q4 N1 f$ x/ _ E4 l8 N) n4 B while(1), W4 [6 z9 J+ z3 R6 |- z! A. m
{ - `$ z9 V N5 v) r$ z, t
//F_10MS 在中断里10MS置一次1
0 N0 t* s3 v0 y: l1 I" H % F$ h) ^0 Z+ f# ?, w+ Y0 ]) j
while(!F_10MS); //主程序10MS执行一次
. i7 A# r- m/ {7 N0 y F_10MS = 0 ;
# I4 b5 T2 [% @' K' D5 i * x0 B9 t7 u. ~ |# W" A2 F
Cmdkey() ;
( R& B5 t! `1 w* G9 j* x, I CmdDisplay() ;! }! y# o( M! _6 s# w' w# T( H+ _
# K5 ~- E3 Q* X/ v
uFg2 = 0 ; //直接操作整个字节4 B3 c! Q# i) w' g$ R4 O
F_LED1 = 1 ; //独立操作字节中的一个位# [: {& g* w" S5 s( n4 c) X9 h2 w( |
* {8 e" x5 ]; L6 b
}
1 x3 [) @% T# |+ G6 [ R% R5 L4 H8 c}
% I: Q& ?4 J. q9 O0 E" l |
|