新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C51編程中的自定義“位”及其保存方案

        C51編程中的自定義“位”及其保存方案

        作者: 時(shí)間:2013-02-17 來源:網(wǎng)絡(luò) 收藏

          addr=0x7F6;//給一個(gè)原來的存儲(chǔ)地址

          REEPROM();//調(diào)用讀取E2PROM的子程序

          current_dat=Rdat;//將讀出的數(shù)據(jù)還給通用的輔助字節(jié)變量

          if(current_dat==0xA5) {//判斷讀出的數(shù)據(jù)是否等于“0xA5”

          switch_sign=1;//將翻轉(zhuǎn)“switch_sign”置“1”

          }

          else {

          switch_sign=0;//將翻轉(zhuǎn)“switch_sign”置“0”

          }

          31個(gè)字節(jié)保存8個(gè)“位”

          用保存一個(gè)的字節(jié)變量來復(fù)原一個(gè)的過程上文已敘述了,接下來闡述1個(gè)字節(jié)變量保存8個(gè)自定義“位”的方案。1個(gè)字節(jié)變量保存8個(gè)自定義“位”的方案很多,例5是其中比較理想的一種:

          #defineuint unsigned int

          #defineuchar unsigned char

          uintaddr;

          ucharWdat,Rdat;

          uchar bdatacurrent_dat;//在可位尋址區(qū)定義unsigned char類型的字節(jié)變量current_dat

          sbitsign_bit1= current_dat^0;//用關(guān)鍵字sbit 定義位變量來獨(dú)立訪問可尋址位對(duì)象中的1位

          sbitsign_bit2= current_dat^1;//自定義標(biāo)志位2

          sbitsign_bit3= current_dat^2;//自定義標(biāo)志位3

          ……

          sbitsign_bit8= current_dat^7;//自定義標(biāo)志位8

          ……

          void Bit_save() {//自定義標(biāo)志位保存子程序

          addr=0x7F6;//給予存儲(chǔ)地址

          Wdat= current_dat;//將current_dat賦值給寫E2PROM的緩沖單元Wdat

          save_data();//調(diào)用保存子程序存儲(chǔ)current_dat數(shù)據(jù)

          }

          void Bit_comeback() {//自定義標(biāo)志位復(fù)原子程序

          addr=0x7F6;//給一個(gè)原來的存儲(chǔ)地址

          REEPROM();//調(diào)用讀取E2PROM的子程序

          current_dat=Rdat;

          //將讀出的數(shù)據(jù)還給通用的輔助字節(jié)變量

          }

          以上這段程序所闡述的,也許是有關(guān)自定義位操作及其保存的一種最簡(jiǎn)捷的方案了。首先是在可位尋址區(qū)定義ucsigned char類型的通用字節(jié)變量current_dat,再用關(guān)鍵字“sbit”定義位變量來獨(dú)立訪問可尋址位對(duì)象的其中一位。這樣將自定義標(biāo)志位提高到類同于特殊功能寄存器(SFR)中可位訪問的方式來操作了——字節(jié)變量current_dat中的8個(gè)位各自可以獨(dú)立操作,且其保存或讀出復(fù)原都只要直接將字節(jié)變量current_dat進(jìn)行保存或讀取即可,無須像其他方案那樣需要進(jìn)行邏輯與、邏輯或等的輔助操作。

          結(jié)語(yǔ)

          單片機(jī)的C語(yǔ)言編程中不一定都要有自定義的標(biāo)志位,但是在某些場(chǎng)合運(yùn)用了自定義的標(biāo)志位,會(huì)使整個(gè)程序顯得簡(jiǎn)潔而明快。當(dāng)然,對(duì)于自定義標(biāo)志位的保存也是視其具體情況而定——應(yīng)該說是不得已而為之的。


        上一頁(yè) 1 2 3 下一頁(yè)

        關(guān)鍵詞: C51編程 自定義 標(biāo)志位

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 灵寿县| 徐水县| 同心县| 延津县| 理塘县| 南投市| 台山市| 西藏| 探索| 阿拉善右旗| 河北省| 漳州市| 宁化县| 荆州市| 开化县| 藁城市| 永登县| 华阴市| 吐鲁番市| 绥德县| 进贤县| 壶关县| 宣武区| 乌什县| 建宁县| 阿合奇县| 龙山县| 苗栗市| 章丘市| 南川市| 教育| 安吉县| 丰原市| 泰来县| 云浮市| 惠来县| 嘉黎县| 曲水县| 靖远县| 康乐县| 资阳市|