久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
實時時鐘RX8010SJ RTC 報警中斷功能
[打印本頁]
作者:
123按時到崗
時間:
2021-7-12 16:43
標題:
實時時鐘RX8010SJ RTC 報警中斷功能
本帖最后由 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
作者:
123按時到崗
時間:
2021-7-14 12:12
忘了怎么直接上傳整個工程了
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日韩欧美在线一区
|
中文字幕在线观看网址
|
99视频网
|
国产精品欧美在线
|
九色精品
|
高清一区二区三区
|
cao在线
|
男女操操操
|
久久国产小视频
|
国产丝袜一区
|
三年中文在线观看免费大全中国
|
岛国在线视频
|
色婷婷久久综合
|
91亚洲精品乱码久久久久久蜜桃
|
99热思思
|
日韩不卡一区二区
|
黄色在线观看网址
|
国产黄色片网站
|
成年人国产
|
欧美黑粗大
|
日韩欧美专区
|
茄子视频色
|
青青草视频网站
|
欧美精品一二三
|
亚洲国产成人av
|
黄色av毛片
|
国产精品成人一区
|
一本到av
|
国产免费黄色片
|
久久久精品一区二区
|
一区二区国产精品
|
日韩免费
|
久久草视频
|
国产成人免费视频
|
亚洲综合视频在线
|
亚洲成人av在线播放
|
亚洲精品综合
|
一区二区高清
|
91精品久久久久久久久久
|
精品国产毛片
|
国产一区中文字幕
|