標(biāo)題: RTC(rx8010sj)的讀寫相關(guān)代碼,利用NXF8563的代碼進(jìn)行修改的。 [打印本頁]

作者: liwei_ts    時(shí)間: 2018-7-9 16:12
標(biāo)題: RTC(rx8010sj)的讀寫相關(guān)代碼,利用NXF8563的代碼進(jìn)行修改的。
/*--------------------------------
  NXF8563初始化
--------------------------------*/
void NXF8563_init()
{
        sda=1;
        delayus();
        scl=1;
        delayus();
        _write_add(0x10,0x00);
        _write_add(0x11,0x32);
        _write_add(0x12,0x10);
        _write_add(0x13,0x10);           //周四
        _write_add(0x14,0x05);
        _write_add(0x15,0x07);
        _write_add(0x16,0x18);
}

/*--------------------------
         開始信號(hào)
--------------------------*/
void start()
{
        sda=1;
        delayus();
                scl=1;
        delayus();
        sda=0;
        delayus();
        scl=0;
        delayus();
}

/*-----------------------
        停止
-----------------------*/
void stop()   
{
        sda=0;
        delayus();
        scl=1;
        delayus();
        sda=1;
        delayus();
}

/*-----------------------
        應(yīng)答
-------------------------*/
void respons()  
{
        unchar i;
        scl=1;
        delayus();
        while((sda==1)&&(i<250))i++;
        scl=0;
        delayus();
}

/*------------------------------------
           寫一個(gè)字節(jié)子函數(shù)
------------------------------------*/
void write_byte(unchar date)
{
        unchar i,temp;
        temp=date;
        for(i=0;i<8;i++)
        {
                temp=temp<<1;
                scl=0;
                delayus();
                sda=CY;
                delayus();
                scl=1;
                delayus();
        }

        scl=0;
        delayus();
        sda=1;
        delayus();
}

/*------------------------------------
         讀一個(gè)字節(jié)函數(shù)
------------------------------------*/
unchar read_byte()  
{
        unchar i,k;
        scl=0;
        delayus();
        sda=1;
        delayus();
        for(i=0;i<8;i++)
        {
                scl=1;
                delayus();
                k=(k<<1)|sda;
                scl=0;
                delayus();
        }
        return k;
}

/*--------------------------------------------------
         往一個(gè)單元里寫內(nèi)容函數(shù)
---------------------------------------------------*/
void _write_add(unchar address,unchar date)   
{
        start();
        write_byte(0x64);
        respons();
        write_byte(address);
        respons();
        write_byte(date);
        respons();
        stop();
}

/*----------------------------------------------
                讀一個(gè)單元的內(nèi)容
---------------------------------------------*/
unchar read_add(unchar address)      
{
        unchar date;
        start();
        write_byte(0x64);
        respons();
        write_byte(address);
        respons();
        start();
        write_byte(0x65);
        respons();
        date=read_byte();
        stop();
        return date;
}

/*------------------------------------------------
           向nxf8563寫入時(shí)鐘數(shù)據(jù)
------------------------------------------------*/
void Write8563(void)
{

        unchar i,tmp;
        for(i=0;i<8;i++)
            {                  //BCD處理
                tmp=time_buf1[i]/10;
                time_buf[i]=time_buf1[i]%10;
                time_buf[i]=time_buf[i]+tmp*16;
            }
//        write_add(0x00,0x00);                            //關(guān)閉寫保護(hù)
//        write_add(0x01,0x00);                                //暫停
        _write_add(0x10,time_buf[7]);                //秒
        _write_add(0x11,time_buf[6]);                //分
        _write_add(0x12,time_buf[5]);                //時(shí)
        _write_add(0x13,time_buf[4]);                //周
        _write_add(0x14,time_buf[3]);                //日
        _write_add(0x15,time_buf[2]);                //月
        _write_add(0x16,time_buf[1]);                //年
//        write_add(0x00,0x00);                        //打開寫保護(hù)
}

/*-----------------------------------------
   讀出時(shí)鐘數(shù)據(jù)
----------------------------------------*/
void read8563()   
{
        time_buf[7]=read_add(0x16);                //秒
        time_buf[6]=read_add(0x15);                //分
        time_buf[5]=read_add(0x14);                //時(shí)
        time_buf[4]=read_add(0x13);                //周
        time_buf[3]=read_add(0x12);                //日
        time_buf[2]=read_add(0x11);                //月
        time_buf[1]=read_add(0x10);                //年

        //time_buf1[7]=time_buf[1]%16+(time_buf[1]/16)*10;
        //time_buf1[6]=(time_buf[2]&0x1f)%16+((time_buf[2]&0x1f)/16)*10;
        //time_buf1[5]=(time_buf[3]&0x3f)%16+((time_buf[3]&0x3f)/16)*10;
        //time_buf1[3]=(time_buf[4]&0x3f)%16+((time_buf[4]&0x3f)/16)*10;
        //time_buf1[2]=(time_buf[5]&0x7f)%16+((time_buf[5]&0x7f)/16)*10;
        //time_buf1[1]=(time_buf[6]&0x7f)%16+((time_buf[6]&0x7f)/16)*10;
        //time_buf1[7]=(time_buf[7]&0x07)%16+((time_buf[7]&0x07)/16)*10;

}



作者: liwei_ts    時(shí)間: 2018-7-9 16:14
本代碼剛測(cè)試通過
作者: YYZZ052    時(shí)間: 2020-6-13 14:23
你這不能用啊,,能把全部的上傳看下嗎,我測(cè)試了,顯示55




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1