新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機I2C總線代碼

        51單片機I2C總線代碼

        作者: 時間:2016-11-19 來源:網絡 收藏
        I2C總線相關函數:

        本文引用地址:http://www.104case.com/article/201611/318122.htm
        void I2Cstart()//開始標志{	SDA=1;SCL=1;SDA=0;delay1ms(4);SCL=0;delay1ms(4);}void I2Cstop()//結束標志{SCL=0;delay1ms(4);SDA=0;delay1ms(4);SCL=1;delay1ms(4);SDA=1;delay1ms(4);}unsigned char I2Creadack(){unsigned char i,byte;byte=0;for(i=0;i<8;i++){SCL=0;SDA=1;delay1ms(4);byte<<=1;if(SDA==1){byte|=0x01;delay1ms(4);}}SCL=0;delay1ms(4);SDA=0;delay1ms(4);SCL=1;delay1ms(4);SCL=0;return byte;}void I2Csend(unsigned char byte)//I2C寫數據的過程{unsigned char mask,i;for(i=0;i<8;i++){	SCL=0;if((mask&byte)==0){SDA=0;}else{SDA=1;}mask>>=1;delay1ms(4);SCL=1;//給足夠時間讓數據讀取delay1ms(4);}SCL=0;SDA=1;		//因為總線上有一個信號為低則低delay1ms(4);SCL=1;delay1ms(4);//等待應答位SCL=0;}unsigned char I2Cread(void){unsigned char i,byte;byte =0;for(i=0;i<8;i++){SCL=0;SDA=1;//讀數據必須拉高delay1ms(4);SCL=1;//數據穩定delay1ms(4);byte<<=1;if(SDA==1){byte|=0x01;}delay1ms(4);}SCL=0;delay1ms(4);SDA=0;//發送的應答位delay1ms(4);SCL=1;delay1ms(4);SCL=0;return byte;}unsigned char I2Cread_eeprom(unsigned char addr)//I2C讀取數據{unsigned char datebyte,datebyte2;I2Cstart();I2Csend(0xa0);//寫數據I2Csend(addr);I2Cstart();I2Csend(0xa1);//讀數據datebyte2=I2Creadack();datebyte=I2Cread();I2Cstop();return datebyte;}void write_eeprom(unsigned char addr,unsigned char datebyte){I2Cstart();I2Csend(0xa0);I2Csend(addr);I2Csend(datebyte);I2Cstop();}


        關鍵詞: 51單片機I2C總

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 潼关县| 泸溪县| 疏勒县| 三原县| 温州市| 涿州市| 开平市| 北海市| 嘉峪关市| 莱芜市| 浦北县| 册亨县| 资中县| 广河县| 阜康市| 康定县| 福州市| 友谊县| 广西| 武胜县| 灵川县| 九寨沟县| 荣昌县| 鄂托克前旗| 安陆市| 定兴县| 永胜县| 澄迈县| 壶关县| 江安县| 双鸭山市| 博罗县| 靖远县| 商河县| 马公市| 营口市| 安丘市| 莲花县| 屏东县| 微博| 肥乡县|