新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 聯(lián)合體union在單片機位定義時的妙用

        聯(lián)合體union在單片機位定義時的妙用

        作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
        在51系列單片機開發(fā)中,我們經(jīng)常喜歡用位定義,對端口某位進行操作,也可以用來做為標志。在開發(fā)msp430avrarm等單片機時,就不能再使用位定義了。因此給我們帶來很多不變,這里介紹一種使用union聯(lián)合同樣也能實現(xiàn)位操作。

        這里以MSP430為例,其他單片機類似。

        本文引用地址:http://www.104case.com/article/201611/322589.htm

        1.用聯(lián)合體做位標志

        __no_initvolatile union {
        uint8 temp;
        struct
        {
        uint8bit0:1;
        uint8bit1:1;
        uint8bit2:1;
        uint8bit3:1;
        uint8bit4:1;
        uint8bit5:1;
        uint8bit6:1;
        uint8bit7:1;
        }temp_bit;
        }var;

        #definea_flagvar.temp_bit.bit0;

        定義了上面的聯(lián)合體,我們就可以對a_flag進行位操作,進行讀寫,置位。

        2.用聯(lián)合體定義端口或者寄存器

        __no_init volatile
        union
        {
        unsigned char IOPORT;
        struct
        {
        unsigned char Way: 1;
        unsigned char Out: 1;
        };
        } @ 8;

        void Test(void)
        {
        IOPORT = 0;
        Way = 1;
        Out = 1;
        }



        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 常熟市| 定陶县| 云浮市| 达尔| 泾源县| 武鸣县| 航空| 济阳县| 文昌市| 奉节县| 通海县| 浮山县| 耿马| 卢龙县| 西和县| 和硕县| 镇巴县| 盐山县| 永靖县| 金沙县| 绵竹市| 东安县| 双鸭山市| 历史| 同仁县| 永嘉县| 乾安县| 廉江市| 保德县| 平度市| 昌都县| 航空| 金华市| 旺苍县| 边坝县| 子长县| 繁峙县| 丰原市| 同心县| 乌兰县| 潼关县|