在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(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ò)上的朋友來討論交流.

            上一頁(yè) 1 2 3 下一頁(yè)

            評(píng)論


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

            關(guān)閉