新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MSP430的頭文件解析

        MSP430的頭文件解析

        作者: 時間:2016-11-26 來源:網絡 收藏
        1、#defineBIT0(0x0001)//(0x0001)不是地址,而是一個16進制數值。

        例1、P3DIR |= BIT3;實際上也可以寫成P3DIR |= 0x0008;意思是將P3口的默認上電值0x0000和0x0008相與,設置P3口的第三位(即P3.3)管腳作輸出使用。

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

        例2、WDTCTL = WDTPW + WDTHOLD;實際上就是WDTCTL=0x5A80;

        你可以在頭文件中查到#define WDTPW (0x5A00)和#define WDTHOLD (0x0080)。WDTCTL是看門狗的控制寄存器,在msp430的UserGuide中有說明:當它的值為0x5A80時停止看門狗定時。
        那為什么我們不直接寫成WDTCTL=0x5A80;呢?這樣的話程序的可讀性會很差。0x5A80只是一個數值,當你下次再看你寫的程序,或者別人讀你的程序時,就不明白WDTCTL=0x5A80;的意思了。如果寫成WDTCTL = WDTPW + WDTHOLD;就好理解多了:WDTPW(Watchdog timer password,看門狗的密碼,WDTCTL的高8位):只有WDTCTL的高8位為0x5A時才能對WDTCTL寄存器進行寫操作。

        WDTHOLD(Watchdog timer hold,WDTCTL的第7位):當WDTCTL的第7位為1時,停止看門狗計時。這樣我們通過PW,HOLD就可以輕松的知道WDTCTL = WDTPW + WDTHOLD;是做什么的了??梢钥闯鰉sp430的頭文件是很人性化的。

        2、當然也有表示地址的,例如,頭文件中有以下部分:

        #ifdef __IAR_SYSTEMS_ASM__

        #define DEFC(name, address) sfrb name = address

        #define DEFW(name, address) sfrw name = address;

        ///運用了可變參數宏的宏定義格式:#define宏符號名(參數表)宏體;;宏體中就是寫出參數表中各個

        //參數之間的關系。

        #endif
        ……
        ……

        #define P6OUT_ (0x0035)

        DEFC(P6OUT, P6OUT_)//這里就是用了以上的可變參數宏。DEFC(P6OUT, P6OUT_) 就表//示:sfrb P6OUT = P6OUT_這里的0x0035就是指P6OUT這個寄存器的地址了。



        關鍵詞: MSP430頭文件解

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 孝昌县| 合作市| 遂川县| 华坪县| 江达县| 平湖市| 阿克苏市| 个旧市| 丹东市| 麻城市| 汨罗市| 惠来县| 桐梓县| 宣威市| 商南县| 平塘县| 长寿区| 长垣县| 上虞市| 昌平区| 西吉县| 准格尔旗| 黑河市| 太原市| 牟定县| 明光市| 罗城| 新安县| 清徐县| 南木林县| 金溪县| 大兴区| 田东县| 兴安盟| 枝江市| 筠连县| 舟曲县| 阿克苏市| 七台河市| 永修县| 钟祥市|