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

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

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

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

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 專題 > I2C串行總線標(biāo)準(zhǔn)驅(qū)動程序(C51)-萬能程序

        I2C串行總線標(biāo)準(zhǔn)驅(qū)動程序(C51)-萬能程序

        作者: 時間:2008-02-01 來源: 收藏
        *------------------------------------------------------------------------------------------
        [文件名] .c
        [版本] 1.1b
        [作者] 鞠春陽
        ===========================================================================================*/#include "reg51.h"
        #include "intrins.h"
        unsigned char SystemError;
        sbit SCL= P1^6; //定義串行時鐘線所在口 使用時根據(jù)自己的需要來定義
        sbit SDA= P1^7; //定義串行數(shù)據(jù)線所在口 使用時根據(jù)自己的需要來定義
        #define SomeNOP(); {_nop_();_nop_();_nop_();_nop_();}
        /*--------------------------------------------------------------------------------
        調(diào)用方式:void AD7416_Start(void) 2003/05/04
        函數(shù)說明:私有函數(shù),專用
        ---------------------------------------------------------------------------------*/
        void I2CStart(void)
        {
        EA=0;
        SDA=1; SCL=1; SomeNOP();//數(shù)據(jù)線保持高,時鐘線從高到低一次跳變,I2C通信開始
        SDA=0; SomeNOP();
        SCL=0;
        }
        /*--------------------------------------------------------------------------------
        調(diào)用方式:void AD7416_I2CStop(void) 2003/05/04
        函數(shù)說明:私有函數(shù),I2C專用
        ---------------------------------------------------------------------------------*/
        void I2CStop(void)
        {
        SCL=0; SDA=0; SomeNOP(); //數(shù)據(jù)線保持低,時鐘線從低到高一次跳變,I2C通信停止
        SCL=1; SomeNOP(); SDA=1;
        EA=1;
        }
        /*--------------------------------------------------------------------------------
        調(diào)用方式:I2CAck(void) 2003/05/13
        函數(shù)說明:私有函數(shù),I2C專用,等待從器件接收方的應(yīng)答
        ACK BY AD7416
        ---------------------------------------------------------------------------------*/
        WaitAck(void)
        {
        unsigned char errtime=255;//因故障接收方無ACK,超時值為255。
        SDA=1;
        SCL=1;
        SystemError=0x10;
        while(SDA)
        { errtime--;
        if(!errtime)
        { AD7416_I2CStop();
        AD7416_SystemError=0x11; //出錯后給全局變量賦值
        return;
        }
        }
        SCL=0;
        }
        /*--------------------------------------------------------------------------------
        調(diào)用方式:void SendAck(void) ﹫2003/05/13
        函數(shù)說明:私有函數(shù),I2C專用,主器件為接收方,從器件為發(fā)送方時,應(yīng)答信號。
        ---------------------------------------------------------------------------------*/
        void SendAck(void)
        {
        SDA=0; SomeNOP(); //數(shù)據(jù)線保持低,時鐘線發(fā)生一次從高低的跳變 發(fā)送一個應(yīng)答信號
        SCL=1; SomeNOP();
        SCL=0;
        }
        /*--------------------------------------------------------------------------------
        調(diào)用方式:void SendAck(void) ﹫2003/05/13
        函數(shù)說明:私有函數(shù),I2C專用,主器件為接收方,從器件為發(fā)送方時,非應(yīng)答信號。
        --------------------------------------------------------------------------------*/
        void SendNotAck(void)
        {
        SDA=1; SomeNOP(); //數(shù)據(jù)線保持高,時鐘線發(fā)生一次從高低的跳變 沒有應(yīng)答
        SCL=1; SomeNOP();
        SCL=0;
        }
        /*--------------------------------------------------------------------------------
        調(diào)用方式:void I2CSend(uchar ch) 2003/05/13
        函數(shù)說明:私有函數(shù),I2C專用
        ---------------------------------------------------------------------------------*/
        void I2CSendByte(Byte ch)
        {
        unsigned char i=8;
        while (i--)
        {
        SCL=0;_nop_();
        SDA=(bit)(ch&0x80); ch


        關(guān)鍵詞: I2C 串行總線 C51

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉