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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

實時時鐘RX8010SJ RTC 報警中斷功能

[復制鏈接]
跳轉到指定樓層
樓主
ID:351957 發表于 2021-7-12 16:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 123按時到崗 于 2021-7-14 12:10 編輯

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"
#include "myiic.h"
#include "RX8010SJ.h"
#include "usart.h"         

int main(void)
{        
        u8 t;
        delay_init();                     //延時函數初始化
        NVIC_Configuration();//設置NVIC中斷分組2:2位搶占優先級,2位響應優先級
        uart_init(9600);
        LED_Init();                          //初始化與LED連接的硬件接口
        TIM3_Int_Init(4999,7199);//10Khz的計數頻率,計數到5000為500ms  
        RX8010SJ_Init();
         
        Set_RX8010SJ_Time(21,7,1,10,00,00,4);  //首次設置時間,設置完成后注釋掉,重新下載一次程序即可掉電保存
             //年,月,日,時,分,秒
         
        RX8010SJ_Fixed();
        while(1)
        {
           Get_RX8010SJ_Time();
          if(t!=calendar.sec)
          {
              t=calendar.sec;
              printf("年月日:");
              printf("%ld,%d,%d\r\n",calendar.w_year+2000,calendar.w_month,calendar.w_date);
              printf("時分秒:");
              printf("%d,%d,%d\r\n",calendar.hour,calendar.min,calendar.sec);
              printf("%d,%d\r\n",calendar.temper_H,calendar.temper_L);
           }
              delay_ms(100);      
        }
}

//RX8010SJ.c文件
#include "RX8010SJ.h"
#include "myiic.h"
#include "delay.h"
#include "usart.h"
#include "led.h"

Calendar_OBJ calendar;


//所有的通信操作都是以[START開始條件]+[從設備地址+(R/W讀寫選擇)]開始的  即0X65和0X64
#define RX8010SJ_WriteAddress       0x64   
#define RX8010SJ_ReadAddress        0x65

u8 BCD2HEX(u8 val)
{
    u8 i;
    i= val&0x0f;
    val >>= 4;
    val &= 0x0f;
    val *= 10;
    i += val;
    return i;
}

u16 B_BCD(u8 val)
{
    u8 i,j,k;
    i=val/10;
    j=val%10;
    k=j+(i<<4);
    return k;
}
void RX8010SJ_WR_Byte(u8 addr,u8 bytedata)
{
    I2C_Start();
    I2C_SendByte(RX8010SJ_WriteAddress);
    I2C_WaitAck();
    I2C_SendByte(addr);
    I2C_WaitAck();
    I2C_SendByte(bytedata);
    I2C_WaitAck();
    I2C_Stop();
}   
u8 RX8010SJ_RD_Byte(u8 addr)
{
    u8 Dat=0;
    I2C_Start();
    I2C_SendByte(RX8010SJ_WriteAddress);
    I2C_WaitAck();
    I2C_SendByte(addr);
    I2C_WaitAck();
    I2C_Start();
    I2C_SendByte(RX8010SJ_ReadAddress);
    I2C_WaitAck();
    Dat=I2C_ReceiveByte();
    I2C_Stop();
    return Dat;
}


void RX8010SJ_Init(void)
{
    I2C_GPIO_Config();
    RX8010SJ_WR_Byte(0x1D,0);
    delay_ms(2);
    RX8010SJ_WR_Byte(0x1E,0);
    delay_ms(2);
    RX8010SJ_WR_Byte(0x1F,0);
    delay_ms(2);         
}


void Set_RX8010SJ_Time(u8 yea,u8 mon,u8 da,u8 hou,u8 min,u8 sec,u8 week)
{
    u8 temp=0;

    temp=B_BCD(yea);
    RX8010SJ_WR_Byte(0x16,temp);

    temp=B_BCD(mon);
    RX8010SJ_WR_Byte(0x15,temp);

    temp=B_BCD(da);
    RX8010SJ_WR_Byte(0x14,temp);

    temp=B_BCD(hou);
    RX8010SJ_WR_Byte(0x12,temp);

    temp=B_BCD(min);
    RX8010SJ_WR_Byte(0x11,temp);

    temp=B_BCD(sec);
    RX8010SJ_WR_Byte(0x10,temp);

    temp=B_BCD(week);
    RX8010SJ_WR_Byte(0x13,temp);
}


void Get_RX8010SJ_Time(void)
{
    calendar.w_year=RX8010SJ_RD_Byte(0x16);  
    calendar.w_year=BCD2HEX(calendar.w_year);

    calendar.w_month=RX8010SJ_RD_Byte(0x15);
    calendar.w_month=BCD2HEX(calendar.w_month);

    calendar.w_date=RX8010SJ_RD_Byte(0x14);  
    calendar.w_date=BCD2HEX(calendar.w_date);

    calendar.hour=RX8010SJ_RD_Byte(0x12);
    calendar.hour&=0x3f;                  
    calendar.hour=BCD2HEX(calendar.hour);

    calendar.min=RX8010SJ_RD_Byte(0x11);
    calendar.min=BCD2HEX(calendar.min);

    calendar.sec=RX8010SJ_RD_Byte(0x10);
    calendar.sec=BCD2HEX(calendar.sec);

    calendar.week=RX8010SJ_RD_Byte(0x13);
    calendar.week=BCD2HEX(calendar.week);

//   RX8010SJ_WR_Byte(0x0e,0x20);
//   calendar.temper_H=RX8010SJ_RD_Byte(0x11);
//   calendar.temper_L=(RX8010SJ_RD_Byte(0x12)>>6)*25;
}
//固定頻率設定報警中斷功能
void RX8010SJ_Fixed(void)
{

    RX8010SJ_WR_Byte(0x1F,0x00);//清除AIE標志位
    delay_ms(2);         
    RX8010SJ_WR_Byte(0x18,0x80);//設置報警數據  當所有的AE標志位設置位1時,報警中斷會每分鐘產生一次
    delay_ms(2);         
    RX8010SJ_WR_Byte(0x19,0x80);
    delay_ms(2);                        
    RX8010SJ_WR_Byte(0x1A,0x80);        
    delay_ms(2);                 
    RX8010SJ_WR_Byte(0x1D,0x00);//設置WADA標志位
    delay_ms(2);                 
    RX8010SJ_WR_Byte(0x1E,0x00);//清除AF標志位
    delay_ms(2);                 
    RX8010SJ_WR_Byte(0x1F,0x08);//設置AIE標志位位1
    delay_ms(2);                 

}
//定時器中斷功能
void RX8010SJ_Tim(void)
{

    RX8010SJ_WR_Byte(0x1D,0x02);
    delay_ms(2);
    RX8010SJ_WR_Byte(0x1E,0x00);
    delay_ms(2);
    RX8010SJ_WR_Byte(0x1F,0x10);
    delay_ms(2);         
    RX8010SJ_WR_Byte(0x32,0x05);
    delay_ms(2);
    RX8010SJ_WR_Byte(0x1B,0x04);
    delay_ms(2);                                 
    RX8010SJ_WR_Byte(0x1D,0x12);
    delay_ms(2);         
}

//RX8010SJ.h文件
#ifndef __RX8010SJ_H
#define __RX8010SJ_H         
#include "sys.h"
typedef struct
{
    u8    hour;
    u8    min;
    u8    sec;            
    u32   w_year;
    u8    w_month;
    u8    w_date;
    u8    week;        
    u8    temper_H;
    u8    temper_L;
}Calendar_OBJ;

extern Calendar_OBJ calendar;    //日歷結構體

extern u8 const mon_table[12];    //月份日期數據表

void RX8010SJ_WR_Byte(u8 addr,u8 bytedata);
u8 RX8010SJ_RD_Byte(u8 addr);
void RX8010SJ_Init(void);
void Get_RX8010SJ_Time(void);      
void Set_RX8010SJ_Time(u8 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec,u8 week);//設置時間   

void RX8010SJ_Fixed(void);
#endif

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:351957 發表于 2021-7-14 12:12 | 只看該作者
忘了怎么直接上傳整個工程了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天干狠狠干 | 国产美女久久久 | 国产一区二区小视频 | 日韩福利 | 欧美日韩在线一区 | 国产一区二区在线免费观看 | 日本国产高清 | 天天摸天天干 | 特级毛片 | 性国产丰满麻豆videosex | 国产精品视频一二三区 | 草草视频在线观看 | 久草成人网 | 麻豆精品一区二区三区在线观看 | 日韩一区二区视频 | 婷婷激情五月网 | 欧美日韩亚洲系列 | 国产精品视频一区二区三区, | 国产成人免费视频网站高清观看视频 | 岛国视频 | 亚洲精品一区国语对白 | 亚洲一区视频在线播放 | 91成人在线 | 欧美性大战久久久久久久蜜臀 | 亚洲一区不卡在线 | 在线视频 欧美日韩 | 日韩一区二区视频 | 成人黄在线观看 | 免费黄色的网站 | 蜜桃精品在线 | av一区在线观看 | 国产视频精品视频 | 中文字幕一区在线观看视频 | 色呦呦网站 | 国产成人自拍一区 | 在线免费观看毛片 | 黄色网址在线免费播放 | 成人特级毛片 | 一级少妇女片 | 欧美性大战久久久久久久蜜臀 | 日韩精品中文字幕一区二区三区 |