在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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>

            新聞中心

            51單片機(jī)IIC總線編程

            作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò) 收藏
            #include
            #define uchar unsigned charsbit sda=P2^0;sbit scl=P2^1;//用單片機(jī)的兩個(gè)I/O口模擬I2C接口uchar a;*void delay()//簡(jiǎn)單延時(shí)函數(shù){ ;; }*void start()  //開(kāi)始信號(hào) SCL在高電平期間,SDA一個(gè)下降沿則表示啟動(dòng)信號(hào){	sda=1; //釋放SDA總線delay();scl=1;delay();sda=0;delay();}*void stop()   //停止 SCL在高電平期間,SDA一個(gè)上升沿則表示停止信號(hào){sda=0;delay();scl=1;delay();sda=1;delay();}*void respons()  //應(yīng)答 SCL在高電平期間,SDA被從設(shè)備拉為低電平表示應(yīng)答{uchar i;scl=1;delay();while((sda==1)&&(i<250))i++;scl=0;delay();}*void init()//總線初始化 將總線都拉高一釋放總線  發(fā)送啟動(dòng)信號(hào)前,要先初始化總線。即總有檢測(cè)到總線空閑才開(kāi)始發(fā)送啟動(dòng)信號(hào){sda=1;delay();scl=1;delay();}*void write_byte(uchar date) //寫(xiě)一個(gè)字節(jié){uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0;//拉低SCL,因?yàn)橹挥性跁r(shí)鐘信號(hào)為低電平期間按數(shù)據(jù)線上的高低電平狀態(tài)才允許變化;并在此時(shí)和上一個(gè)循環(huán)的scl=1一起形成一個(gè)上升沿delay();sda=CY;delay();scl=1;//拉高SCL,此時(shí)SDA上的數(shù)據(jù)穩(wěn)定delay();}scl=0;//拉低SCL,為下次數(shù)據(jù)傳輸做好準(zhǔn)備delay();sda=1;//釋放SDA總線,接下來(lái)由從設(shè)備控制,比如從設(shè)備接收完數(shù)據(jù)后,在SCL為高時(shí),拉低SDA作為應(yīng)答信號(hào)delay();}*uchar read_byte()//讀一個(gè)字節(jié){uchar i,k;scl=0;delay();sda=1;delay();for(i=0;i<8;i++){scl=1;//上升沿時(shí),IIC設(shè)備將數(shù)據(jù)放在sda線上,并在高電平期間數(shù)據(jù)已經(jīng)穩(wěn)定,可以接收啦delay();	k=(k<<1)|sda;scl=0;//拉低SCL,使發(fā)送端可以把數(shù)據(jù)放在SDA上delay();	}return k;}*void write_add(uchar address,uchar date)//任意地址寫(xiě)一個(gè)字節(jié){start();//啟動(dòng)write_byte(0xa0);//發(fā)送從設(shè)備地址respons();//等待從設(shè)備的響應(yīng)write_byte(address);//發(fā)出芯片內(nèi)地址respons();//等待從設(shè)備的響應(yīng)write_byte(date);//發(fā)送數(shù)據(jù)respons();//等待從設(shè)備的響應(yīng)stop();//停止}*uchar read_add(uchar address)//讀取一個(gè)自己{uchar date;start();//啟動(dòng)write_byte(0xa0);//發(fā)送發(fā)送從設(shè)備地址 寫(xiě)操作respons();//等待從設(shè)備的響應(yīng)write_byte(address);//發(fā)送芯片內(nèi)地址respons();//等待從設(shè)備的響應(yīng)start();//啟動(dòng)write_byte(0xa1);//發(fā)送發(fā)送從設(shè)備地址 讀操作respons();//等待從設(shè)備的響應(yīng)date=read_byte();//獲取數(shù)據(jù)stop();//停止return date;//返回?cái)?shù)據(jù)}


            關(guān)鍵詞: 51單片機(jī)IIC總線編

            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉