新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 24LCxx系列的讀寫EEPROM的例C語言源程序實例

        24LCxx系列的讀寫EEPROM的例C語言源程序實例

        作者: 時間:2012-08-18 來源:網絡 收藏

        //*
        //***********************************************
        void EE_SEQU_Read(unsigned char ctrl,unsigned char addr,unsigned char length,unsigned char *dptr)
        {
        IdleI2C(); // ensure module is idle
        StartI2C(); // Start condition
        I2C_Done(); // Wait Start condition completed

        本文引用地址:http://www.104case.com/article/171029.htm

        WriteI2C(ctrl); // Write Control to
        while(SSPCON2bits.ACKSTAT); // test for ACK condition, if received
        I2C_Done(); // Clear SSPIF flag

        WriteI2C(addr); // Write Address to
        while(SSPCON2bits.ACKSTAT); // test for ACK condition, if received
        I2C_Done(); // Clear SSPIF flag

        RestartI2C(); // initiate Restart condition
        I2C_Done();

        WriteI2C(ctrl+1); // Write Control to
        while(SSPCON2bits.ACKSTAT); // Test for ACK condition, if received
        I2C_Done(); // Clear SSPIF flag

        while (length!=0)
        {
        *dptr=ReadI2C(); // Enable I2C Receiver Store EEPROM data to Point buffer
        I2C_Done();
        dptr++;
        length--;

        if (length==0) NotAckI2C();
        else AckI2C(); // Continue read next data, send a acknowledge to EEPROM

        I2C_Done();
        }

        StopI2C(); // send STOP condition
        I2C_Done(); // wait until stop condition is over
        }

        //***********************************************
        //* Check I2C action that is completed *
        //***********************************************
        void I2C_Done(void)
        {
        while (!PIR1bits.SSPIF); // Completed the action when the SSPIF is Hi.
        PIR1bits.SSPIF=0; // Clear SSPIF
        }

        //************************************************
        //* Initial I2C Master Mode with 7 bits Address *
        //* Clock Speed : 100KHz @4MHz *
        //************************************************
        void Initialize_I2C_Master(void)
        {
        OpenI2C(MASTER,SLEW_ON);
        SSPADD= 9;
        }


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 且末县| 沾化县| 长武县| 肥乡县| 榆中县| 长宁县| 清水河县| 日喀则市| 齐河县| 华池县| 股票| 吉安市| 万山特区| 方城县| 华蓥市| 凯里市| 乐亭县| 健康| 大兴区| 河东区| 麻阳| 璧山县| 鹰潭市| 桦南县| 南和县| 屏东市| 姚安县| 桂东县| 乾安县| 河北省| 武宣县| 上饶市| 拜城县| 永嘉县| 商洛市| 永丰县| 石阡县| 冀州市| 南康市| 佛山市| 马关县|