在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

c語言中標志位的設置問題

嵌入式應用開發 ? 來源:嵌入式應用開發 ? 作者:嵌入式應用開發 ? 2022-12-18 15:37 ? 次閱讀

單片機、裸機開發的朋友,比如跟一些模塊配合聯調會遇到各種信號是否到位、成功等等狀態,而這些信號大多都是bool類型,1個bit即可進行標識。

當然,如果僅僅是幾個標志,直接拿個uint8_t的整形來進行標識也不會影響什么,但如果特別多的話似乎就比較廢RAM了。然而,為了更好的管理這些標志位等,有個如下幾種方式供大家更好的管理這些標志位 :

兩種方式:唯一直接標識。

typedef union _tag_SystemFlag
 {
     uint16_t all;
     struct 
     {
        uint16_t Run         :1;
        uint16_t Alarm       :1;
       uint16_t Online      :1;
        uint16_t TimerOver   :1;
        uint16_t Reserver    :12;
    }bit;

} uSystemFlag;

uSystemFlag  unSystemFlag;

int main(int argc, char *argv[]) {

    unSystemFlag.all = 0x00; //系統標志清除

    unSystemFlag.bit.Run       = 1; //置位
    unSystemFlag.bit.Alarm     = 1;
    unSystemFlag.bit.Online    = 1;
    unSystemFlag.bit.TimerOver = 1;

    unSystemFlag.bit.Run       = 0; //清零
    unSystemFlag.bit.Alarm     = 0;
    unSystemFlag.bit.Online    = 0;
    unSystemFlag.bit.TimerOver = 0;

    return 0;
}

這些標志位的操作無非就是置位、清零,以及讀取三種方式。

但如代碼中這樣的操作方式在語句或語義表達上還是不夠直觀。

我經常談到,代碼可以不寫注釋,不過你的每個變量、函數名稱等需要足夠的直觀,所以很多朋友習慣把這些標志封裝起來。

枚舉和位移

typedef enum _tag_Flag {
cEmRun = 0,
cEmAlarm,
cEmOnline,
cEmTimerOver
}emSystemFlag;

uint16_t SystemFlag ;
//置位
void SetFlag(emSystemFlag flag)
{
    SystemFlag |=  ((uint16_t)0x01) << flag;
}
//清除
void ClrFlag(emSystemFlag flag)
{
   SystemFlag &=  ~(((uint16_t)0x01) << flag);
}
//獲得狀態
uint8_t  GetFlag(emSystemFlag flag)
{
    return (((SystemFlag & (((uint16_t)0x01) << flag)) != 0)? true:false);  
}

int main(int argc, char *argv[]) {

    SetFlag(cEmAlarm);

    if(GetFlag(cEmAlarm) == true)
    {
        printf("ClrFlagrn");
        ClrFlag(cEmAlarm);
    }
    else
    {
        printf("SetFlagrn");
        SetFlag(cEmAlarm);
    }
    return 0;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6060

    文章

    44835

    瀏覽量

    645283
  • C語言
    +關注

    關注

    180

    文章

    7628

    瀏覽量

    139953
  • 函數
    +關注

    關注

    3

    文章

    4365

    瀏覽量

    63953
  • 變量
    +關注

    關注

    0

    文章

    614

    瀏覽量

    28776
  • 標志位
    +關注

    關注

    0

    文章

    2

    瀏覽量

    5884
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    C語言中宏定義的應用

    C語言中,宏定義是一種預處理指令,用于在代碼中定義和使用常量、函數或代碼片段的替代。
    發表于 08-17 15:33 ?1084次閱讀

    單片機的C語言中操作用法

    單片機的C語言中操作用法
    發表于 08-17 15:04

    C語言標志怎么用

    關于C語言標志的應用。。。。。不懂!
    發表于 03-18 12:07

    C語言程序中標識符號的意義

    的熱情,但是在學校能學到最基礎的東西,一個程序的組成,緣由,如何實現等基本功能。之所以對C語言這門課程感興趣,因為從小我對任何一個電子產品愛不釋手,還有希望以后自己也能夠開發出一些有趣的東西。C
    發表于 07-14 07:53

    c語言中標志有什么作用?

    c語言中標志有什么作用?
    發表于 10-14 08:05

    C語言中指針的介紹非常詳細

    C語言中指針的介紹非常詳細 C語言中指針的介紹非常詳細
    發表于 12-25 10:39 ?57次下載

    C語言和匯編語言混合編程方法和C語言中斷處理方法

    C語言和匯編語言混合編程方法和C語言中斷處理方法,new
    發表于 01-06 14:36 ?36次下載

    C語言中的關鍵字

    C語言中的入門教程
    發表于 10-14 16:24 ?3次下載

    單片機C語言中標志的經典應用,讓你快速學會單片機C語言

    //====標志應用 定義聯合體實體====typedef union uFLG{ uint8 Flg ; //定義整形數據 struct FLAG{ //域定義
    的頭像 發表于 07-06 15:48 ?7482次閱讀

    總結那么幾個C語言中的“坑”

    總結幾個C語言中的“坑”
    的頭像 發表于 01-16 10:52 ?2776次閱讀

    c#語言中怎么使用HTTP代理

    c#語言中怎么使用HTTP代理。
    的頭像 發表于 09-01 14:46 ?2299次閱讀

    C語言中必須要掌握的運算操作

    C語言中,特別是在嵌入式的開發中,操作是很常用的一個知識點,涉及到按(bit)操作的地方也是很常見的。本文分享一些C
    的頭像 發表于 02-10 14:19 ?2171次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>必須要掌握的<b class='flag-5'>位</b>運算操作

    簡單介紹嵌入式C語言中常用的操作

    在嵌入式C語言中,使用操作程序有很好的可讀性。以下就簡單介紹以下常用的操作。
    的頭像 發表于 02-23 10:36 ?1179次閱讀

    scanf在C語言中的作用

    scanf在C語言中的作用? scanf是C語言中的輸入函數,用于從標準輸入設備(如鍵盤)讀取數據,并將其存儲到變量中。它是C
    的頭像 發表于 11-23 14:13 ?1960次閱讀

    C語言中的socket編程基礎

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網絡編程的基礎。通過使用socket,程序可以發送和接收數據,實現不同計算機之間的通信
    的頭像 發表于 11-01 16:51 ?929次閱讀
    主站蜘蛛池模板: www.色黄| 欧美黑人粗硬大在线看 | 天天爽夜夜爽人人爽 | 欧美18同性gay视频 | 四虎影院永久网站 | 欧美手机看片 | 午夜在线亚洲男人午在线 | 波多野结衣久久国产精品 | 老头天天吃我奶躁我的动图 | 又黑又长黑人欧美三级 | 色色色色色网 | 黄色日本网站 | 国产手机在线国内精品 | 在线三级网 | 免费大片黄在线观看 | 精品一区视频 | 亚洲高清成人 | 久久精品香蕉视频 | 在线观看视频网站 | 国产亚洲papapa | 成年大片免费视频播放手机不卡 | 9久久99久久久精品齐齐综合色圆 | 电影天堂bt | 男女草逼视频 | 天天综合天天添夜夜添狠狠添 | 国产视频一区二区在线观看 | 免费黄色大片 | 国产成人精品影视 | 国产精品资源手机在线播放 | 亚洲综合在线观看一区www | 黄色三级在线观看 | 日本一区二区三区不卡在线看 | 首页 亚洲 欧美 制服 丝腿 | 色综合久久网女同蕾丝边 | 中文字幕首页 | 岛国毛片一级一级特级毛片 | 2021天天干| 人成xxxwww免费视频 | 免费观看黄网站 | 禁网站在线观看免费视频 | 亚洲国产成人精品青青草原100 |