新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430模擬IIC接口程序

        MSP430模擬IIC接口程序

        作者: 時間:2016-11-22 來源:網絡 收藏
        1-簡介
        MSP430單片機普通II模擬IIC接口程序范例。

        2-程序例程

        #include "MSP430x14x.h"

        //P3.2 SCL

        //P3.3 SDA

        #define SDA_1 P3OUT |= BIT3 //SDA = 1

        #define SDA_0 P3OUT &=~ BIT3 //SDA = 0

        #define SCL_1 P3OUT |= BIT2 //SCL = 1

        #define SCL_0 P3OUT &=~ BIT2 //SCL = 0

        #define DIR_IN P3DIR &=~ BIT3; SDA_1//I/O口為輸入

        #define DIR_OUT P3DIR |= BIT3 //I/0口為輸出

        #define SDA_IN ((P3IN >> 3) & 0x01) //Read SDA

        unsigned int a[50];

        /
        {
        TempBit = 1;
        }
        else
        {
        TempBit = 0;
        }
        DIR_OUT;
        TempData = (TempData << 1) | TempBit;
        SCL_0;
        }
        Delay(5);
        return(TempData);
        }

        /) && (i < 255))
        {
        i++;
        }
        DIR_OUT;
        SCL_0;
        Delay(5);
        }

        /)
        {
        unsigned char HighData = 0;
        unsigned char LowData = 0;
        unsigned int TempData = 0;
        Start();
        WriteByte(0xa0);
        ReceiveAck();
        WriteByte(unit);
        ReceiveAck();
        Start();
        WriteByte(0xa1);
        ReceiveAck();
        LowData = ReadByte();
        Acknowledge();
        HighData = ReadByte();
        Stop();
        TempData = (HighData << 8) + LowData;
        Delay(1000);
        return(TempData);
        }

        /
        {
        unsigned char i;
        unsigned char HighData = 0;
        unsigned char LowData = 0;
        unsigned int TempData = 0;
        Start();
        WriteByte(0xa0);
        ReceiveAck();
        WriteByte(unit);
        ReceiveAck();
        Start();
        WriteByte(0xa1);
        ReceiveAck();
        for (i=0; i<49; i++)
        {
        LowData = ReadByte();
        Acknowledge();
        HighData = ReadByte();
        Acknowledge();
        a[i]= (HighData << 8) + LowData;
        }
        LowData = ReadByte();
        Acknowledge();
        HighData = ReadByte();
        Stop();
        a[49] = (HighData << 8) + LowData;
        Delay(1000);
        }

        /, unsigned int WriteData)
        {
        unsigned char LowData = 0;
        unsigned char HighData = 0;
        LowData = (unsigned char)WriteData;
        HighData = (unsigned char)(WriteData >> 8);
        Start();
        WriteByte(0xa0);
        ReceiveAck();
        WriteByte(unit);
        ReceiveAck();
        WriteByte(LowData);
        ReceiveAck();
        WriteByte(HighData);
        ReceiveAck();
        Stop();
        Delay(2000);
        }
        //******************************************************************************


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 陈巴尔虎旗| 汤原县| 延吉市| 安塞县| 崇阳县| 开化县| 丽水市| 黑山县| 响水县| 库车县| 沂南县| 璧山县| 五常市| 太康县| 五指山市| 镇江市| 永城市| 略阳县| 江华| 海伦市| 漳州市| 万年县| 阳春市| 禹州市| 渑池县| 海宁市| 商水县| 泗洪县| 大安市| 清徐县| 泽普县| 南雄市| 漳州市| 阿克陶县| 思茅市| 桦甸市| 临夏市| 团风县| 科尔| 诸城市| 玉门市|