新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 向24C02中寫入當前的時間

        向24C02中寫入當前的時間

        作者: 時間:2016-11-18 來源:網絡 收藏
        /*

        //1、向24C02寫入當前的時間,下次開機就會從
        上次斷電時的時間開始計時

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

        //2、重點掌握IIC總線幾個常用信號的寫法;
        //

        */

        #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啟動信號---------

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

        }

        //-------24C04應答信號-------
        void sck()
        { uchar i=0;
        scl=1;
        delay();
        while(sda==1&&i<255)
        i++;
        scl=0;
        delay();
        }
        //-------24C04寫一個字節------
        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;//寫完一個字節后再把總線拉成接收狀態;
        delay();
        sda=1;
        delay();
        }

        //---------24C04讀一個字節---------

        uchar readbyte()
        {
        uchar i,k;
        scl=0;//寫完一個字節后再把總線拉成接收狀態;
        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指定地址寫一個字節------
        void writeaddr(uchar addr,uchar date)
        {
        star();
        writebyte(0xa0);
        ack();
        writebyte(addr);
        ack();
        writebyte(date);
        ack();
        stop();
        }

        //--------24C04指定地址讀一個字節--------
        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;
        }


        }



        關鍵詞: 24C02寫

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 芒康县| 和林格尔县| 页游| 沁水县| 盐山县| 定安县| 井研县| 乐山市| 天柱县| 大余县| 观塘区| 大足县| 科技| 霸州市| 彭阳县| 高碑店市| 永修县| 盱眙县| 昌图县| 长阳| 电白县| 浠水县| 武安市| 桓仁| 建始县| 农安县| 玉屏| 兴业县| 张北县| 武穴市| 涿鹿县| 泗水县| 晴隆县| 乳山市| 祁阳县| 白朗县| 同心县| 深泽县| 原平市| 上虞市| 莲花县|