中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

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

        MSP430非模擬IIC總線(xiàn)控制程序

        作者: 時(shí)間:2016-12-02 來(lái)源:網(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í)只要編寫(xiě) :

        //#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:
        {
        //訪(fǎng)問(wèn)準(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口無(wú)關(guān)的PX口關(guān)閉以便于對(duì)編寫(xiě)系統(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震蕩器開(kāi)啟
        //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í)鐘源為T(mén)X2CLK,分頻因子為1
        BCSCTL2 += SELM1;
        //SMCLK的時(shí)鐘源為T(mén)X2CLK,分頻因子為1
        BCSCTL2 += SELS;
        }

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

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

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

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

        評(píng)論


        技術(shù)專(zhuān)區(qū)

        關(guān)閉