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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MSP430非模擬IIC總線控制程序

          MSP430非模擬IIC總線控制程序

          作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏

          #if __VER__ < 200
          interrupt [USART0TX_VECTOR] void ISR_I2C(void)
          #else
          #pragma vector=USART0TX_VECTOR
          __interrupt void ISR_I2C(void)
          #endif //上面的程序其實(shí)只要編寫 :

          //#pragma vector=USART0TX_VECTOR __interrupt void ISR_I2C(void)就行.
          {
          switch (I2CIV)
          {
          case I2CIV_AL:
          {
          //仲裁中斷
          break;
          }
          case I2CIV_NACK:
          {
          //NACK中斷
          break;
          }
          case I2CIV_OA:
          {
          //自己地址中斷
          break;
          }
          case I2CIV_ARDY:
          {
          //訪問準(zhǔn)備好中斷
          break;
          }
          case I2CIV_RXRDY:
          {
          //接收準(zhǔn)備好中斷
          I2CBuffer[0]=I2CDRB;
          break;
          }
          case I2CIV_TXRDY:
          {
          //發(fā)送準(zhǔn)備好中斷
          I2CDRB = I2CBuffer[tx_count];
          tx_count = tx_count - 1;
          if (tx_count < 0)
          {
          //禁止發(fā)送中斷
          I2CIE &= ~TXRDYIE;
          }
          break;
          }
          case I2CIV_GC:
          {
          //一般調(diào)用中斷
          break;
          }
          case I2CIV_STT:
          {
          //起始條件中斷
          break;
          }
          }
          }
          void Init_IIC_Port(void)
          {
          //初始化端口寄存器 與IIC口無關(guān)的PX口關(guān)閉以便于對(duì)編寫系統(tǒng)板的綜合程序.
          //P1DIR = 0xFF;
          //P2DIR = 0xFF;
          P3DIR = 0xF5;
          //P4DIR = 0xFF;
          P5DIR = 0x7F;
          //P6DIR = 0xFF;
          //P4OUT = 0X11;
          //P5OUT &= 0XF0;
          P3SEL|=BIT1+BIT3; //在這里如果設(shè)置成

          }
          void Init_CLK(void)
          {
          unsigned int i;
          //將寄存器的內(nèi)容清零
          //XT2震蕩器開啟
          //LFTX1工作在低頻模式
          //ACLK的分頻因子為1
          BCSCTL1 = 0X00;
          do
          {
          // 清除OSCFault標(biāo)志
          IFG1 &= ~OFIFG;
          for (i = 0x20; i > 0; i--);
          }
          while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1

          //open XT2, LFTX2 選擇低頻率
          BCSCTL1 &= ~(XT2OFF + XTS); //BCSCTL1=0X00 功能一樣
          //DCO Rsel=7(Freq=3200k/25攝氏度)
          BCSCTL1 |= RSEL0 + RSEL1 + RSEL2;
          BCSCTL1 |= 0x07;
          //MCLK的時(shí)鐘源為TX2CLK,分頻因子為1
          BCSCTL2 += SELM1;
          //SMCLK的時(shí)鐘源為TX2CLK,分頻因子為1
          BCSCTL2 += SELS;
          }

          //對(duì)于系統(tǒng)時(shí)鐘的選擇關(guān)系到整個(gè)程序運(yùn)行穩(wěn)定性.

          看到很多賣開發(fā)板的人將IIC硬件寫上去后再去搞個(gè)模擬的IIC總線程序. 感覺到有點(diǎn)說不出的感覺. 其實(shí)430的IIC不是專用來外擴(kuò)展FLASH的,而是用來和一些特殊的電路連接,實(shí)現(xiàn)功能. 對(duì)于MSP430147~149 15X 16X 的芯片內(nèi)部有48~60K的Flash了還有必要來個(gè)模擬的IIC總線時(shí)序么.裝個(gè)UCOS都可以了.開發(fā)板要做的事情就是如何做好非模擬IIC程序的設(shè)計(jì).更不是為了和C1搞比拼搶占市場(chǎng).

          上面的程序是經(jīng)過MSP430F1611的測(cè)試.程序的大部分來自上,曾想自己從新開發(fā)定義一個(gè),但想到網(wǎng)絡(luò)上沒有這個(gè)程序的完整版.我就修改了其中的幾個(gè)地方.一方面便于自己查看并復(fù)習(xí)也適于網(wǎng)絡(luò)上的朋友來討論交流.

          上一頁 1 2 3 下一頁

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