新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 向24C02中寫入當(dāng)前的時(shí)間

        向24C02中寫入當(dāng)前的時(shí)間

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

        //1、向24C02寫入當(dāng)前的時(shí)間,下次開機(jī)就會(huì)從
        上次斷電時(shí)的時(shí)間開始計(jì)時(shí)

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

        //2、重點(diǎn)掌握IIC總線幾個(gè)常用信號(hào)的寫法;
        //

        */

        #include
        #define uint unsigned int
        #define uchar unsigned char
        sbit sda=P1^0;
        sbit scl=P1^1;
        uchar num1,num1,flag1,flag2,sec;
        void delay();
        void delayms(uint z);
        void start();
        void stop();
        void sck();
        void writebyte(uchar date);
        uchar readbyte();
        void writeaddr(uchar addr,uchar date);
        uchar readaddr(uchar addr);
        void intc();
        void disp();
        //=========================
        void main()
        { uchar temp;
        intc();
        P0=temp;
        sec=readaddr(2);
        if(sec>100)
        sec=0;
        while(1)
        {
        if(flag1==1)
        {flag1=0;
        writeaddr(2,sec);
        }
        disp();

        }
        }
        //-----初始化------
        void intc()
        {
        scl=1;
        delay();
        sda=1;
        delay();
        TMOD=0x01;
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        }
        //----------------
        void delay()
        {;;}
        //-----------------
        void delayms(uint z)
        {
        uint x,y;
        for(x=0;x for(y=0;y<112;y++);

        }
        //-------24C04啟動(dòng)信號(hào)---------

        void start()
        {
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        delay();
        }
        //--------24C04停止信號(hào)--------
        void stop()
        {
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();

        }

        //-------24C04應(yīng)答信號(hào)-------
        void sck()
        { uchar i=0;
        scl=1;
        delay();
        while(sda==1&&i<255)
        i++;
        scl=0;
        delay();
        }
        //-------24C04寫一個(gè)字節(jié)------
        void writebyte(uchar date)
        {
        uchar i;
        for(i=0;i<8;i++)
        {
        date=date<<1;
        scl=0;
        delay();
        sda=CY;
        delay();
        scl=1;
        delay();
        }
        scl=0;//寫完一個(gè)字節(jié)后再把總線拉成接收狀態(tài);
        delay();
        sda=1;
        delay();
        }

        //---------24C04讀一個(gè)字節(jié)---------

        uchar readbyte()
        {
        uchar i,k;
        scl=0;//寫完一個(gè)字節(jié)后再把總線拉成接收狀態(tài);
        delay();
        sda=1;
        delay();
        for(i=0;i<8;i++)
        {
        scl=1;
        delay();
        k=(k<<1)||sda;
        delay();
        scl=0;
        delay();
        }
        delay();
        return k;
        }

        //-------24C04指定地址寫一個(gè)字節(jié)------
        void writeaddr(uchar addr,uchar date)
        {
        star();
        writebyte(0xa0);
        ack();
        writebyte(addr);
        ack();
        writebyte(date);
        ack();
        stop();
        }

        //--------24C04指定地址讀一個(gè)字節(jié)--------
        uchar readaddr(uchar addr)
        {uchar date1;
        star();
        writebyte(0xa0);
        ack();
        writebyte(addr);
        ack();
        writebyte(0xa1);
        ack();
        date1=readbyte();
        stop();
        return date1;
        }

        //===================
        void disp()
        {
        P0=sec/10;
        P2=0xfe;
        delayms(5);
        P0=0;
        delayms(1);
        P0=sec%10;
        P2=0xfd;
        delayms(5);
        P0=0;
        delayms(1);
        }

        //----------------
        void timer0() interrupt 1
        {
        TH0=(65536-10000)/256;
        TL0=(65536-10000)%256;
        num1++;
        if(num1==100)
        {num1=0;flag1=1;sec++;
        if(sec>99)
        sec=0;
        }


        }



        關(guān)鍵詞: 24C02寫

        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 化德县| 永年县| 乃东县| 于都县| 池州市| 临猗县| 讷河市| 永修县| 遂宁市| 伊宁县| 兴海县| 武山县| 朝阳县| 东阳市| 海门市| 东丰县| 和平县| 贺州市| 嘉定区| 耿马| 云安县| 辛集市| 新郑市| 台江县| 方城县| 调兵山市| 工布江达县| 惠来县| 日土县| 台东县| 井陉县| 苏尼特左旗| 福清市| 涪陵区| 宜章县| 蕲春县| 兴山县| 溧水县| 元江| 安宁市| 新田县|