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

          新聞中心

          MSP430的頭文件解析

          作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
          1、#defineBIT0(0x0001)//(0x0001)不是地址,而是一個(gè)16進(jìn)制數(shù)值。

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

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

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

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

          WDTHOLD(Watchdog timer hold,WDTCTL的第7位):當(dāng)WDTCTL的第7位為1時(shí),停止看門狗計(jì)時(shí)。這樣我們通過PW,HOLD就可以輕松的知道WDTCTL = WDTPW + WDTHOLD;是做什么的了。可以看出msp430的頭文件是很人性化的。

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

          #ifdef __IAR_SYSTEMS_ASM__

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

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

          ///運(yùn)用了可變參數(shù)宏的宏定義格式:#define宏符號(hào)名(參數(shù)表)宏體;;宏體中就是寫出參數(shù)表中各個(gè)

          //參數(shù)之間的關(guān)系。

          #endif
          ……
          ……

          #define P6OUT_ (0x0035)

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



          關(guān)鍵詞: MSP430頭文件解

          評(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); })();