新聞中心

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

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

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

        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.104case.com/article/201611/316458.htm

        3.2.IAR編譯器對位的支持更強大,除了上面的方法外還有以下更簡單的操作方法:
        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使用了擴展語言,它對位域的支持變?yōu)樽钚閏har類型,我們可以很方便地用來定義位變量。
        采用結(jié)構(gòu)體來定義位變量:
        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)體做出來的位變量只可以訪問t的位,不能夠直接訪問變量t,和標準的IAR位操作也不一樣。采用聯(lián)合體來定義效果更佳。
        #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;//訪問變量t的位
        t_bit0=~t_bit0;
        PORTB=t;//直接訪問變量t
        }
        位變量也可以直接定義在工作寄存器里。

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



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

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 金坛市| 西林县| 永和县| 平度市| 嵊泗县| 海阳市| 新昌县| 札达县| 龙口市| 宣威市| 渭源县| 夏河县| 昌图县| 泰兴市| 平潭县| 株洲市| 汕尾市| 沐川县| 龙里县| 周至县| 洛扎县| 海南省| 洪湖市| 成都市| 荥阳市| 鄂托克前旗| 寻乌县| 安达市| 大同县| 普格县| 南昌县| 阿拉善右旗| 延川县| 安达市| 合江县| 布尔津县| 明溪县| 双柏县| 威远县| 城固县| 阿坝|