新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > I2C總線驅動(C51語言源程序)

        I2C總線驅動(C51語言源程序)

        作者: 時間:2013-01-07 來源:網絡 收藏

        /*****************停止總線****************/
        void Stop(void)
        {
        SCL=0;
        SDA=0;
        SCL=1;
        _nop_();
        _nop_();
        _nop_();
        SDA=1;
        _nop_();
        _nop_();
        _nop_();
        SCL=0;
        }

        /**************檢查應答位*******************/
        bit RecAck(void)
        {
        SCL=0;
        SDA=1;
        SCL=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        CY=SDA; //因為返回值總是放在CY中的
        SCL=0;
        return(CY);
        }

        /***************對I2C總線產生應答*******************/
        void I2CACK(void)
        {
        SDA=0;
        SCL=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        SCL=0;
        _nop_();
        SDA=1;
        }

        /*****************不對I2C總線產生應答***************/
        void I2CNoAck(void)
        {
        SDA=1;
        SCL=1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        SCL=0;
        }

        /*******************向I2C總線寫數據*********************/
        void I2CSendByte(unsigned char sendbyte)
        {
        unsigned char data j=8;
        for(;j>0;j--)
        {
        SCL=0;
        sendbyte=1; //無論C51怎樣實現這個操作,始終會使CY=sendbyte^7;
        SDA=CY;
        SCL=1;
        }
        SCL=0;
        }

        /**********************從I2C總線上讀數據子程序**********/
        unsigned char I2CReceiveByte(void)
        {
        register receivebyte,i=8;
        SCL=0;
        while(i--)
        {
        SCL=1;
        receivebyte=(receivebyte1)|SDA;
        SCL=0;
        }
        return(receivebyte);
        }

        /***************一個簡單延時程序************************/
        void Delay(unsigned char DelayCount)
        {
        while(DelayCount--);
        }

        void main()
        {
        // unsigned int i;
        //unsigned char j[32];
        unsigned char *pa,*pb,temp=0;
        unsigned char a[8]={5,6,7,8,9,10,11,12};
        unsigned char b[8]={0,0,0,0,0,0,0,0};
        pa=a[0];
        pb=b[0];
        P2_7=0;
        RW24XX(pa,8,0x0,writeI2C,M2401);
        RW24XX(pa,8,0x20,writeI2C,M2401);
        RW24XX(pb,8,0x20,readI2C,M2401);
        RW24XX(pb,8,0x30,writeI2C,M2401);
        // RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address,
        // unsigned char ControlByte,enum eepromtype EepromType)
        while(1)
        {
        P2_7=1;
        }
        }


        上一頁 1 2 下一頁

        關鍵詞: I2C 總線驅動 C51語言

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南安市| 资兴市| 长子县| 盱眙县| 南木林县| 习水县| 平武县| 中阳县| 孟州市| 临武县| 灵宝市| 重庆市| 柞水县| 和平区| 临夏县| 神池县| 广灵县| 柏乡县| 崇州市| 永顺县| 扎鲁特旗| 江达县| 荣成市| 新和县| 上蔡县| 油尖旺区| 五华县| 彩票| 新余市| 绥阳县| 楚雄市| 麻阳| 栖霞市| 孝昌县| 大冶市| 张家港市| 安吉县| 康保县| 昭通市| 玛沁县| 札达县|