在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > I2C總線驅(qū)動(dòng)(C51語(yǔ)言源程序)

            I2C總線驅(qū)動(dòng)(C51語(yǔ)言源程序)

            作者: 時(shí)間:2013-01-07 來(lái)源:網(wǎng)絡(luò) 收藏

            i2c 總線上單片機(jī)系統(tǒng)中常用到的總線技術(shù)這里給大家介紹一個(gè)源程序。

            //#pragma ot(6,SIZE)
            #i nclude AT89X52.H>
            #i nclude intrins.h>
            #define ERRORCOUNT 10
            #define read 0xa1
            #define write 0xa0
            sbit SDA=P1^6;
            sbit SCL=P1^5;
            enum eepromtype {M2401,M2402,M2404,M2408,M2416,M2432,M2464,M24128,M24256};
            enum eepromtype EepromType;

            //DataBuff為讀寫數(shù)據(jù)輸入/輸出緩沖區(qū)的首址
            //ByteQuantity 為要讀寫數(shù)據(jù)的字節(jié)數(shù)量
            //Address 為EEPROM的片內(nèi)地址
            //ControlByte 為EEPROM的控制字節(jié),具體形式為(1)(0)(1)(0)(A2)(A1)(A0)(R/W),其中R/W=1,
            //表示讀操作,R/W=0為寫操作,A2,A1,A0為EEPROM的頁(yè)選或片選地址;
            //EepromType為枚舉變量,需為M2401至M24256中的一種,分別對(duì)應(yīng)24C01至24C256;
            //函數(shù)返回值為一個(gè)位變量,若返回1表示此次操作失效,0表示操作成功;
            //ERRORCOUNT為允許最大次數(shù),若出現(xiàn)ERRORCOUNT次操作失效后,則函數(shù)中止操作,并返回1
            //SDA和SCL由用戶自定義,這里暫定義為P0^0和P0^1;
            //其余的用戶不用管,只要把只子程序放在你的程序中并調(diào)用它就可以了;


            /*******************************I2C(源程序)**********************************************/
            bit RW24XX(unsigned char *DataBuff,unsigned char ByteQuantity,unsigned int Address,
            unsigned char ControlByte,enum eepromtype EepromType)
            {
            void Delay(unsigned char DelayCount);
            void I2CStart(void);
            void I2CStop(void);
            bit I2CRecAck(void);
            void I2CNoAck(void);
            void I2CAck(void);
            unsigned char I2CReceiveByte(void);
            void I2CSendByte(unsigned char sendbyte);
            unsigned char data j,i=ERRORCOUNT;
            bit errorflag=1;
            while(i--)
            {
            I2CStart();
            I2CSendByte(ControlByte0xfe);
            if(I2CRecAck())
            continue;
            if(EepromType>M2416)
            {
            I2CSendByte((unsigned char)(Address>>8));
            if(I2CRecAck())
            continue;
            }
            I2CSendByte((unsigned char)Address);
            if(I2CRecAck())
            continue;
            if(!(ControlByte0x01))
            {
            j=ByteQuantity;
            errorflag=0; //********clr errorflag
            while(j--)
            {
            I2CSendByte(*DataBuff++);
            if(!I2CRecAck())
            continue;
            errorflag=1;
            break;
            }
            if(errorflag==1)
            continue;
            break;
            }
            else
            {
            I2CStart();
            I2CSendByte(ControlByte);
            if(I2CRecAck())
            continue;
            while(--ByteQuantity)
            {
            *DataBuff++=I2CReceiveByte();
            I2CAck();
            }
            *DataBuff=I2CReceiveByte(); //read last byte data
            I2CNoAck();
            errorflag=0;
            break;
            }
            }

            I2CStop();
            if(!(ControlByte0x01))
            {
            Delay(255);
            Delay(255);
            Delay(255);
            Delay(255);
            }
            return(errorflag);
            }


            /*****************以下是對(duì)I2C總線的操作子程序***/
            /*****************啟動(dòng)總線**********************/
            void I2CStart(void)
            {
            SCL=0; //
            SDA=1;
            SCL=1;
            _nop_();
            _nop_();
            _nop_();
            SDA=0;
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            SCL=0;
            SDA=1; //
            }


            上一頁(yè) 1 2 下一頁(yè)

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉