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

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

[复制链接]

该用户从未签到

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

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-13 23:12 , Processed in 0.125000 second(s), 25 queries , Gzip On.

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

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

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