新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430非模擬IIC總線控制程序

        MSP430非模擬IIC總線控制程序

        作者: 時間:2016-12-02 來源:網絡 收藏
        對于MSP430的學習經歷一個從痛苦到對430很有感情的轉變.當然開始學習的時候那是相當惱火.網上也沒有什么很多的相關資料.就算有資料也是給不全.參考與學習都不很方便.經過多方面的努力和找書再到對程序的仔細讀,感到非模擬的總線帶來的方便還是很多的. 下面就是程序和流程圖:



        IIC.h

        void Init_IIC(void);
        void EEPROM_ByteWrite(unsigned char nAddr,unsigned char nVal);
        unsigned char EEPROM_RandomRead(unsigned char nAddr);
        unsigned char EEPROM_CurrentAddressRead(void);
        void EEPROM_AckPolling(void);
        void Init_CLK(void);
        void Init_IIC_Port(void);

        Main.C

        /*******************************************
        IIC for AT24c16 OR AT24CXXX 系列

        只要控制好IICRM IICSTP IICSTT 其硬件會自動完成
        SCL SDA的一系列時序 只要注意各個發送與接收的控制標志位.
        ******************************************/
        #include
        #include "IIC.h"
        volatile unsigned char Data[6];
        void main(void)
        {
        //volatile unsigned char Data[6];

        //停止看門狗
        WDTCTL = WDTPW+WDTHOLD;

        //初始化端口
        Init_IIC_Port();

        //初始化時鐘
        Init_CLK();
        //I2C初始化
        Init_IIC(); //置傳輸方式及控制方式

        //打開中斷
        _EINT();

        //寫入數據
        EEPROM_ByteWrite(0x0000,0x12);
        //等待寫操作完成
        EEPROM_AckPolling();
        //寫入數據
        EEPROM_ByteWrite(0x0001,0x34);
        //等待寫操作完成
        EEPROM_AckPolling();
        //寫入數據
        EEPROM_ByteWrite(0x0002,0x56);
        //等待寫操作完成
        EEPROM_AckPolling();
        //寫入數據
        EEPROM_ByteWrite(0x0003,0x78);
        //等待寫操作完成
        EEPROM_AckPolling();
        //寫入數據
        EEPROM_ByteWrite(0x0004,0x9A);
        //等待寫操作完成
        EEPROM_AckPolling();
        //寫入數據
        EEPROM_ByteWrite(0x0005,0xBC);
        //等待寫操作完成
        EEPROM_AckPolling();

        //讀出數據,隨機讀
        Data[0] = EEPROM_RandomRead(0x0000); //地址自動加1
        //讀出數據,當前地址讀
        Data[1] = EEPROM_CurrentAddressRead();
        //讀出數據,當前地址讀
        Data[2] = EEPROM_CurrentAddressRead();
        //讀出數據,當前地址讀
        Data[3] = EEPROM_CurrentAddressRead();
        //讀出數據,當前地址讀
        Data[4] = EEPROM_CurrentAddressRead();
        //讀出數據,當前地址讀
        Data[5] = EEPROM_CurrentAddressRead();
        }

        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 江川县| 华宁县| 扶绥县| 黔西县| 贵州省| 青海省| 油尖旺区| 宁津县| 乐陵市| 九江市| 小金县| 乌苏市| 唐山市| 依兰县| 鄄城县| 九江市| 吴桥县| 宜兰县| 远安县| 休宁县| 安平县| 谢通门县| 忻城县| 南皮县| 剑川县| 安泽县| 简阳市| 铜川市| 阿拉善左旗| 锦州市| 驻马店市| 泽州县| 金湖县| 天气| 广灵县| 衡东县| 格尔木市| 文水县| 新绛县| 锡林浩特市| 恩施市|