新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機模擬IIC總線與EEPROM進行數據通信

        單片機模擬IIC總線與EEPROM進行數據通信

        作者: 時間:2016-11-23 來源:網絡 收藏
        #include

        #define uchar unsigned char
        sbit sda=P2^0;
        sbit scl=P2^1;
        uchar a;
        void delay()
        { ;; }
        void start() //開始信號
        {
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        delay();
        }

        本文引用地址:http://www.104case.com/article/201611/320235.htm

        void stop() //停止
        {
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();
        }

        void respons() //應答
        {
        uchar i;
        scl=1;
        delay();
        while((sda==1)&&(i<250))i++;
        scl=0;
        delay();
        }

        void init()
        {
        sda=1;
        delay();
        scl=1;
        delay();
        }

        void write_byte(uchar date)
        {
        uchar i,temp;
        temp=date;


        for(i=0;i<8;i++)
        {
        temp=temp<<1;
        scl=0;
        delay();
        sda=CY;
        delay();
        scl=1;
        delay();
        //scl=0;
        // delay();
        }
        scl=0;
        delay();
        sda=1;
        delay();
        }

        uchar read_byte()
        {
        uchar i,k;
        scl=0;
        delay();
        sda=1;
        delay();
        for(i=0;i<8;i++)
        {
        scl=1;
        delay();
        k=(k<<1)|sda;
        scl=0;
        delay();
        }
        return k;
        }

        void delay1(uchar x)
        {
        uchar a,b;
        for(a=x;a>0;a--)
        for(b=100;b>0;b--);
        }

        void write_add(uchar address,uchar date)
        {
        start();
        write_byte(0xa0);
        respons();
        write_byte(address);
        respons();
        write_byte(date);
        respons();
        stop();
        }

        uchar read_add(uchar address)
        {
        uchar date;
        start();
        write_byte(0xa0);
        respons();
        write_byte(address);
        respons();
        start();
        write_byte(0xa1);
        respons();
        date=read_byte();
        stop();
        return date;
        }

        void main()
        {
        init();
        write_add(23,0xaa);
        delay1(100);
        P1=read_add(23);
        while(1);
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 沙坪坝区| 平阴县| 山东省| 贵定县| 遵化市| 崇阳县| 广宗县| 瑞昌市| 琼海市| 洛川县| 顺义区| 颍上县| 沂源县| 菏泽市| 甘谷县| 天水市| 蒙自县| 遵义市| 商城县| 乾安县| 巴林左旗| 泰顺县| 延寿县| 布尔津县| 安康市| 江永县| 库伦旗| 西贡区| 彰化市| 宁波市| 临夏县| 高青县| 崇左市| 玉田县| 泰顺县| 武陟县| 长沙县| 隆子县| 江华| 琼中| 精河县|