新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)i2c存儲器24c02驅(qū)動程序

        51單片機(jī)i2c存儲器24c02驅(qū)動程序

        作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏

        void writebyte(unsigned char date)//寫一個(gè)字節(jié)
        {
        unsigned char i,temp;
        temp = date;
        for(i = 0; i < 8; i++)
        {
        temp <<= 1;//temp左移一位后高位進(jìn)CY
        SCL = 0;
        delay();
        SDA = CY;
        delay();
        SCL = 1;
        delay();
        }
        SCL = 0;//應(yīng)答信號中SCL = 1,所以這里要置0
        delay();
        SDA = 1;//用完要釋放數(shù)據(jù)總線
        delay();
        }
        unsigned char readbyte()//讀一個(gè)字節(jié)
        {
        unsigned char i,k;
        SCL = 0;
        delay();
        SDA = 1;
        for(i = 0; i < 8; i++)
        {
        SCL = 1;
        delay();
        k = (k << 1) | SDA; //和最低位或,一位位送到K
        SCL = 0;
        delay();
        }
        delay();
        return k;
        }
        void write_add(unsigned char address,unsigned char date)//向地址寫一個(gè)字節(jié)數(shù)據(jù)
        {
        start();
        writebyte(0xa0);//A0,A1,A2接地,AT24C02芯片地址為1010,送控制字為1010A2A1A0R/~W
        respons();
        writebyte(address);
        respons();
        writebyte(date);
        respons();
        stop();
        }
        unsigned char read_add(unsigned char address)//向地址讀一個(gè)字節(jié)數(shù)據(jù)
        {
        unsigned char date;
        start();
        writebyte(0xa0);//A0,A1,A2接地,AT24C02芯片地址為1010,送控制字為1010A2A1A0R/~W
        respons();
        writebyte(address);
        respons();
        start();
        writebyte(0xa1);//A0,A1,A2接地,AT24C02芯片地址為1010,送控制字為1010A2A1A0R/~W
        respons();
        date = readbyte();
        stop();
        return date;
        }

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


        //向地址寫n個(gè)字節(jié)數(shù)據(jù),數(shù)據(jù)存放在指針P指的數(shù)組中
        void write_n_add(unsigned char * p,unsigned char address,unsigned char n)
        {
        unsigned char i;
        for(i = 0; i < n; i++)
        {
        write_add((address + i),*(p + i));
        delay_ms(20);//一定要適當(dāng)延時(shí),不然寫不進(jìn)去
        }
        }
        //向地址讀n個(gè)字節(jié)數(shù)據(jù),數(shù)據(jù)存放在指針P指的數(shù)組中
        void read_n_add(unsigned char * p,unsigned char address,unsigned char n)
        {
        unsigned char i;
        for(i = 0; i < n; i++)
        {
        *(p + i) = read_add(address + i);

        }
        }


        上一頁 1 2 下一頁

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 高州市| 伽师县| 佳木斯市| 天柱县| 方山县| 都江堰市| 浦城县| 伊宁县| 嵊州市| 双鸭山市| 鱼台县| 华宁县| 米易县| 荥阳市| 张家界市| 景谷| 渭南市| 岚皋县| 通山县| 铜鼓县| 化德县| 嘉义县| 共和县| 延安市| 西畴县| 黄冈市| 松原市| 黄陵县| 张家港市| 卫辉市| 阜平县| 怀化市| 特克斯县| 南召县| 高台县| 满洲里市| 永修县| 永仁县| 苗栗县| 建昌县| 南溪县|