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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机C语言中标志位的经典应用3 m2 C- f8 H; }( g3 S8 q# @/ r8 A
( `4 f9 _* }1 ~7 @# u
//====标志位应用 定义联合体实体====5 a' |* \+ u) m8 \! V6 X. M9 j  T  j
typedef union uFLG{' l% d8 p" K  X, ~5 N

+ ]5 ]2 R" ]5 T    uint8 Flg ;     //定义整形数据
2 b% E+ u, \( y1 E7 p" a: |, D
! U2 |/ b* U0 {, U7 L    struct FLAG{        //位域定义: g0 k0 R' F! a* e
        uint8   Flg1   : 1;- s# E* `* V, I" a4 v/ d
        uint8   Flg2   : 1;5 w6 K/ w3 T6 j* D: I) r& q3 K
        uint8   Flg3   : 1;" I) n& d: v7 _8 j: Z% w, |
        uint8   Flg4   : 1;- A  l/ T7 {! a& ~* s
        uint8   Flg5   : 1;' a, ?3 K8 U0 L
        uint8   Flg6   : 1;
9 q8 Z" f, B! u9 r5 Q5 A        uint8   Flg7   : 1;8 P2 I2 l$ C5 _
        uint8   Flg8   : 1;0 t, [1 }& \! o6 Y# ~
    }tFlg;
" e% O. M  U" J7 _. ~& D, i6 [ 0 d4 N4 V! f* k/ M! a$ {5 f
}uFlg;1 g: u* y6 |$ l7 b# _4 Q( V
2 D* j. O/ c! V1 J
uFlg uF1,uF2;   //定义联合体变量5 u. k) j4 h: G4 T+ O$ c
7 Y7 i' h, r' }$ Y- {; [7 B% H
//-------uF1-------------------8 u0 Y6 g6 D- R' i& q' H0 Y
#define uFg1            uF1.Flg  S. ?1 b! ~/ X) g' |, o4 R* {

8 z0 f! D# H6 M4 s#define F_10MS          uF1.tFlg.Flg1. b2 x& i" e+ d9 @, E+ k% d0 C2 i
#define F_Fls1s         uF1.tFlg.Flg2
) x6 V! ]8 @4 y' |6 F/ J" Q2 m! o#define F_Fls           uF1.tFlg.Flg3
3 `1 P! \- B8 x/ O6 p4 B( C#define F_FlsQ          uF1.tFlg.Flg4* d' n3 ?9 [) a, {
3 @  @6 L2 K" V( w; s
//-------uF2-------------------0 p9 K  f2 y& s. Z) I
#define uFg2                uF2.Flg
% r0 K- j' X' {# Z5 q- W#define F_LED1          uF2.tFlg.Flg12 n" Q! A5 G0 L0 a# m6 D, ?
#define F_LED2          uF2.tFlg.Flg2; C, S. ^5 Z5 a: n0 n3 @$ S6 S% e
#define F_LED3          uF2.tFlg.Flg3( f, S) q. f) u
" n; t8 V5 Q' v8 z; ]! a8 D+ J

- S0 W! r8 w6 S6 e9 E0 t' n
/ ?' H6 i/ j3 {& z. l8 o# P//----应用实例------
) A! L( T( [% T! A/ \  B( F2 { + l$ F$ @, j1 G8 t/ a& R- Z
void main(void)8 }) l. C; T2 ]( ?8 Z
{
3 i! ~% W1 u, W# f1 X* w    while(1)/ V) l% j2 I! T1 A
    {
* L& a5 u+ M! i) q2 l0 r8 D        //F_10MS 在中断里10MS置一次1! W) m0 s% G' x7 _

7 \$ y- j, ^' V7 U        while(!F_10MS);  //主程序10MS执行一次 ( ^: I) K- |  S; h) v% t
        F_10MS = 0 ; , Z* Z0 c5 N7 ~- i

5 u- t# S+ y8 M$ f- d# P; T) h        Cmdkey() ;
2 _5 Y6 R) E8 D- ?        CmdDisplay() ;, x3 r$ H# B+ m6 V" j0 \% R  k: l, ]

9 I* k- X7 I# H2 g2 t8 w) q        uFg2 = 0 ;      //直接操作整个字节. x- z2 p9 Y0 j* \% A% f7 K
        F_LED1 = 1 ;    //独立操作字节中的一个位$ l) ~) `+ _0 c, F8 q
2 f9 Q, w. R( i
    }9 E( h- D% Y7 M4 s7 j; u
}( Z* ~& I/ J+ F4 N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-5 11:24 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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