<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > IAR for AVR 學(xué)習(xí)筆記(3)--位操作

          IAR for AVR 學(xué)習(xí)筆記(3)--位操作

          作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
          3.1.在c語(yǔ)言里對(duì)位的操作如一般如下:

          PORTB|=(1<<2);//置PORTB的第2位=1
          PORTB&=~(1<<2);//置PORTB的第2位=0
          PORTB^|=(1<<2);//取反PORTB的第2位
          While(PORTB&(1<<2));//判斷1
          While(!(PORTB&(1<<2)));//判斷為0

          本文引用地址:http://www.ex-cimer.com/article/201611/316458.htm

          3.2.IAR編譯器對(duì)位的支持更強(qiáng)大,除了上面的方法外還有以下更簡(jiǎn)單的操作方法:
          PORTB_ Bit2=1; //置PORTB的第2位=1
          PORTB_ Bit2=0; //置PORTB的第2位=0
          PORTB_ Bit2=~ PORTB_ Bit2;//取反PORTB的第2位
          While(PORTB_ Bit2);或者while(PORTB_Bit2==1);//判斷1
          while(PORTB_ Bit2==0);//判斷0
          PORTC_Bit4=PORTB_Bit2;//把PORTB的第2位傳送到PORTC的第4位

          3.3.位變量定義
          由于iar使用了擴(kuò)展語(yǔ)言,它對(duì)位域的支持變?yōu)樽钚閏har類型,我們可以很方便地用來(lái)定義位變量。
          采用結(jié)構(gòu)體來(lái)定義位變量:
          struct
          {
          unsigned char bit0:1;
          unsigned char bit1:1;
          unsigned char bit2:1;
          unsigned char bit3:1;
          unsigned char bit4:1;
          unsigned char bit5:1;
          unsigned char bit6:1;
          unsigned char bit7:1;
          }t;
          然后就可以用以下位變量了。
          t.bit0=1;
          t.bit0=~t.bit0;
          但是采用以上結(jié)構(gòu)體做出來(lái)的位變量只可以訪問(wèn)t的位,不能夠直接訪問(wèn)變量t,和標(biāo)準(zhǔn)的IAR位操作也不一樣。采用聯(lián)合體來(lái)定義效果更佳。
          #i nclude
          union
          {

          unsigned char t;

          struct
          {

          unsigned char t_bit0:1,

          t_bit1:1,

          t_bit2:1,

          t_bit3:1,

          t_bit4:1,

          t_bit5:1,

          t_bit6:1,

          t_bit7:1;

          };

          };
          void main(void)
          {
          t_bit0=1;//訪問(wèn)變量t的位
          t_bit0=~t_bit0;
          PORTB=t;//直接訪問(wèn)變量t
          }
          位變量也可以直接定義在工作寄存器里。

          3.4 bool 數(shù)據(jù)類型在C++語(yǔ)言里是默認(rèn)支持的。
          如果你在C代碼的頭文件里包含stdbool.h, bool數(shù)據(jù)類型也可以使用在C語(yǔ)言里。也可以使用布爾值 false和 true。不過(guò)是占用8位1個(gè)字節(jié)。
          #i nclude
          #i nclude
          bool y=0;//定義位變量
          void main(void)
          {
          y=!y;//取反位變量
          PORTB_Bit3=y;//傳遞位變量
          }



          關(guān)鍵詞: IARAVR位操

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();