找回密码
 注册
关于网站域名变更的通知
查看: 657|回复: 1
打印 上一主题 下一主题

单片机C语言中标志位的经典应用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-26 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-20 21:17 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表