久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4565|回復: 0
打印 上一主題 下一主題
收起左側

RX8010SJ驅動的關鍵代碼,自己編寫資源,與君共享

[復制鏈接]
跳轉到指定樓層
樓主
ID:81196 發表于 2021-4-30 11:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 shumivan 于 2021-4-30 13:37 編輯

RX8010SJ.c的關鍵代碼如下:

CLK_Time calendar;

/**************時鐘芯片初始化************/
void RX8010_Init(void)
{        
    CLK_IIC_Init();
}
/**************向時鐘寫入時間************/
void RX8010_Write_Time(CLK_Time SetRtc)
{
        u8 buf[7];
        buf[0] = SetRtc.second;
        RX8010_Write_Bytes(0x10,buf,1);
        buf[0] = SetRtc.minute;
        RX8010_Write_Bytes(0x11,buf,1);
        buf[0] = SetRtc.hour;
        RX8010_Write_Bytes(0x12,buf,1);
        buf[0] = RX8010_Week_Translate(WriteWeek ,CLK_Get_Week(2000 + BCD_To_Dec(SetRtc.year) ,BCD_To_Dec(SetRtc.month) ,BCD_To_Dec(SetRtc.day)));
        
        printf("W:%d\r\n",RX8010_Week_Translate(WriteWeek ,CLK_Get_Week(2000 + BCD_To_Dec(SetRtc.year) ,BCD_To_Dec(SetRtc.month) ,BCD_To_Dec(SetRtc.day))));
        RX8010_Write_Bytes(0x13,buf,1);
        buf[0] = SetRtc.day;
        RX8010_Write_Bytes(0x14,buf,1);
        buf[0] = SetRtc.month;
        RX8010_Write_Bytes(0x15,buf,1);
        buf[0] = SetRtc.year;
        RX8010_Write_Bytes(0x16,buf,1);
        
        buf[0] = 0x00;
        RX8010_Write_Bytes(0x1F,buf,1);
}
/**************從時鐘讀出時間************/
void RX8010_Read_Time (CLK_Time *GetRtc)
{
  u8 i;
        u8 buf[7];
        RX8010_Read_Bytes(0x10,buf,7);//讀出溫度值(器件地址,子地址,數據儲存器,字節數)
        GetRtc->second = buf[0]&0x7f; //秒,低七位有效
        GetRtc->minute = buf[1]&0x7f; //分,低七位有效
        GetRtc->hour   = buf[2]&0x3f; //時,低六位有效
        GetRtc->week   = RX8010_Week_Translate(ReadWeek,buf[3]&0x7f); //周,低七位有效
        GetRtc->day    = buf[4]&0x3f; //日,低六位有效
        GetRtc->month  = buf[5]&0x1f; //月,低五位有效
        GetRtc->year   = buf[6]&0xff; //年,低八位有效
}

/**************向RAM指定地址寫入數據************/
//slv_addr  器件地址
//sub_addr  內部寄存器地址
void RX8010_Read_Bytes(unsigned int sub_addr,unsigned char *s,unsigned char no)
{
        u8 i;
        
        CLK_IIC_Start(); //*發送啟動信號*/
  if(CLK_IIC_Send_Byte(RX8010_WRITE) == 1)//*發送SLA+W*///0x64
          {
                  CLK_IIC_Stop();
                        return;
                }
        if(CLK_IIC_Send_Byte(sub_addr) == 1)//*發送SLA+W*///0x64
          {
                  CLK_IIC_Stop();
                        return;
                }
               
        CLK_IIC_Start();
        if(CLK_IIC_Send_Byte(RX8010_READ) == 1)
          {
                  CLK_IIC_Stop();
                        return;
                }
        for(i=0;i<no-1;i++)
                {
                  *(s + i) = CLK_IIC_Read_Byte(1);
                }
        *(s + no-1) = CLK_IIC_Read_Byte(0);
        CLK_IIC_Stop();
}

/**************從RAM指定地址讀出數據************/
//slv_addr  器件地址
//sub_addr  內部寄存器地址
void RX8010_Write_Bytes(unsigned int sub_addr,unsigned char *s,unsigned char no)
{
        u8 i;

        CLK_IIC_Start();
        if(CLK_IIC_Send_Byte(RX8010_WRITE) == 1)
          {
                  CLK_IIC_Stop();
                        return;
                }
               
  if(CLK_IIC_Send_Byte(sub_addr) == 1)
          {
                  CLK_IIC_Stop();
                  return;
                }
        for(i=0;i<no;i++)
    {
      if(CLK_IIC_Send_Byte(*(s + i)) == 1)
                          {
                                  CLK_IIC_Stop();
                                        return;
                                }
                        *s=CLK_IIC_Read_Byte(1);
      s++;
    }
}
/**************獲得現在是星期幾************/
//設置時鐘
//把輸入的時鐘轉換為秒鐘
//以1970年1月1日為基準
//1970~2099年為合法年份
//返回值:0,成功;其他:錯誤代碼.
//月份數據表                                                                                         
u8 const Table_Week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正數據表        
//獲得現在是星期幾
//功能描述:輸入公歷日期得到星期(只允許1901-2099年)
//輸入參數:公歷年月日
//返回值:星期號                                                                                                                                                                                 
u8 CLK_Get_Week(u16 year,u8 month,u8 day)
{        
        u16 temp2;
        u8 yearH,yearL;
        
        yearH=year/100;        yearL=year%100;
        // 如果為21世紀,年份數加100  
        if (yearH>19)yearL+=100;
        // 所過閏年數只算1900年之后的  
        temp2=yearL+yearL/4;
        temp2=temp2%7;
        temp2=temp2+day+Table_Week[month-1];
        if (yearL%4==0&&month<3)temp2--;
        return(temp2%7);
}

RX8010SJ.h的關鍵代碼如下:


#define RX8010_READ   0x65
#define RX8010_WRITE  0x64


// register address , for RX-8010SJ
#define RX8010_ADDR_SECOND      ( 0x10 )
#define RX8010_ADDR_MINUTE      ( 0x11 )
#define RX8010_ADDR_HOUR        ( 0x12 )
#define RX8010_ADDR_WEEK        ( 0x13 )
#define RX8010_ADDR_DATE        ( 0x14 )
#define RX8010_ADDR_MONTH       ( 0x15 )
#define RX8010_ADDR_YEAR        ( 0x16 )
#define RX8010_ADDR_RSV17       ( 0x17 )
#define RX8010_ADDR_ALM_MINUTE  ( 0x18 )
#define RX8010_ADDR_ALM_HOUR    ( 0x19 )
#define RX8010_ADDR_ALM_WEEK    ( 0x1A )
#define RX8010_ADDR_ALM_DATE    ( 0x1A )
#define RX8010_ADDR_TMR_CNT0    ( 0x1B )
#define RX8010_ADDR_TMR_CNT1    ( 0x1C )
#define RX8010_ADDR_EXT_REG     ( 0x1D )
#define RX8010_ADDR_FLAG_REG    ( 0x1E )
#define RX8010_ADDR_CTRL_REG    ( 0x1F )





評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 九九久久久 | 亚洲国产精品人人爽夜夜爽 | 日本人做爰大片免费观看一老师 | 人人干人人玩 | 国产午夜精品理论片a大结局 | 91看片网址 | 激情五月综合 | 国产欧美一区二区三区另类精品 | 日本在线网站 | 欧美三级电影在线播放 | 国产精品久久久久久模特 | 夜夜摸夜夜操 | 色婷婷一区二区三区四区 | 九九热这里 | 国产传媒视频在线观看 | 亚洲精品在线免费观看视频 | 中文字幕国产 | 日韩成人免费视频 | 欧美成人激情视频 | 亚洲免费在线播放 | 国内精品免费久久久久软件老师 | 欧美日韩在线精品 | 7777精品伊人久久精品影视 | 久久一区二区三区四区 | 欧美日韩在线播放 | 精品国产欧美一区二区三区成人 | 国产精品亚洲一区二区三区在线 | 在线播放精品视频 | 麻豆国产精品777777在线 | 婷婷激情五月网 | 日韩av资源站 | 国产欧美精品一区二区色综合朱莉 | 久久99精品久久久久子伦 | 中文在线www | 91精品亚洲 | 日韩a在线 | 午夜在线免费观看 | 涩涩视频在线观看免费 | 精品国产一区二区三区在线观看 | 一区二区精品电影 | 久久精品国产免费看久久精品 |