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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

c語言中標(biāo)志位的設(shè)置問題

嵌入式應(yīng)用開發(fā) ? 來源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-12-18 15:37 ? 次閱讀

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

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

兩種方式:唯一直接標(biāo)識。

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; //系統(tǒng)標(biāo)志清除

    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;
}

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

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

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

枚舉和位移

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);
}
//獲得狀態(tài)
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;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6043

    文章

    44622

    瀏覽量

    638667
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137752
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4346

    瀏覽量

    62983
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    613

    瀏覽量

    28467
  • 標(biāo)志位
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5830
收藏 人收藏

    評論

    相關(guān)推薦

    C語言中宏定義的應(yīng)用

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

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

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

    C語言標(biāo)志怎么用

    關(guān)于C語言標(biāo)志的應(yīng)用。。。。。不懂!
    發(fā)表于 03-18 12:07

    C語言程序中標(biāo)識符號的意義

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

    c語言中標(biāo)志有什么作用?

    c語言中標(biāo)志有什么作用?
    發(fā)表于 10-14 08:05

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

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

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

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

    C語言中的關(guān)鍵字

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

    單片機C語言中標(biāo)志的經(jīng)典應(yīng)用,讓你快速學(xué)會單片機C語言

    //====標(biāo)志應(yīng)用 定義聯(lián)合體實體====typedef union uFLG{ uint8 Flg ; //定義整形數(shù)據(jù) struct FLAG{ //域定義
    的頭像 發(fā)表于 07-06 15:48 ?7343次閱讀

    總結(jié)那么幾個C語言中的“坑”

    總結(jié)幾個C語言中的“坑”
    的頭像 發(fā)表于 01-16 10:52 ?2643次閱讀

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

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

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

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

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

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

    scanf在C語言中的作用

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

    C語言中的socket編程基礎(chǔ)

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過使用socket,程序可以發(fā)送和接收數(shù)據(jù),實現(xiàn)不同計算機之間的通信
    的頭像 發(fā)表于 11-01 16:51 ?475次閱讀
    主站蜘蛛池模板: 国产亚洲精品仙踪林在线播放 | 在线黄色免费 | 一级特黄aa大片一又好看 | 男人j桶进女人j的视频 | 日本又粗又长一进一出抽搐 | 欧美城天堂网 | 亚洲日本中文字幕天天更新 | 久久久久久久影院 | 久青草免费视频手机在线观看 | 又粗又爽又色男女乱淫播放男女 | 伊人毛片 | 一区二区三区四区精品 | 五月婷婷丁香在线 | 美女性色 | 日本黄色网址大全 | 色站在线 | 精品国产三级在线观看 | 日本特级黄色录像 | 国产黄页 | 韩国朴银狐诱感在线观看 | 国产精品人人爱一区二区白浆 | 九九国产在线观看 | 免费黄视频在线观看 | 午夜h| 色综合天天综合网国产国产人 | 国产精品vv在线 | 手机看片免费永久在线观看 | 国产精品久久女同磨豆腐 | aaa在线| 四虎精品影院永久在线播放 | 97久久精品国产精品青草 | 手机看片自拍自拍自拍 | 亚洲精品美女久久久久网站 | 天天翘夜夜洗澡天天做 | 国产二区三区 | 色www 永久免费网站 | 一级特黄aa大片免费 | 亚洲毛片基地4455ww | 一区二区三区四区视频在线 | 亚洲日本高清 | 四虎影视在线影院在线观看 |