📄 ds1302.h
字号:
unsigned char rtc_gethour ()
{
unsigned char hour,hourtemp;
hourtemp=dataread(0x85);
hour=hourtemp&0x0f;
if (hourtemp&0x80)
hourtemp&=0x10;
else
hourtemp&=0x30;
hourtemp>>=4;
hour=hourtemp*10+hour;
return hour;
}
/****************************************************************
※ 读取上下午函数
※ 功能: 读取上下午数据
※ 参数说明: rtc_getap () , 无参数
※ 返回值说明: 返回上下午数据
0x00-上午,0xff-下午
****************************************************************/
unsigned char rtc_getap()
{
unsigned char aptemp;
unsigned char ap;
aptemp = dataread (0x85);
if (aptemp&0x20)
ap = 0xff;
else
ap = 0x00;
return ap;
}
/****************************************************************
※ 读取日期函数
※ 功能: 读取日期数据
※ 参数说明: rtc_getdate () , 无参数
※ 返回值说明: 返回日期数据
****************************************************************/
unsigned char rtc_getdate()
{
unsigned char date,datetemp;
datetemp=dataread(0x87);
date=datetemp&0x0f;
datetemp>>=4;
date=datetemp*10+date;
return date;
}
/****************************************************************
※ 读取月份函数
※ 功能: 读取月份数据
※ 参数说明: rtc_getmon () , 无参数
※ 返回值说明: 返回月份数据
****************************************************************/
unsigned char rtc_getmon()
{
unsigned char mon,montemp;
montemp=dataread(0x89);
mon=montemp&0x0f;
montemp>>=4;
mon=montemp*10+mon;
return mon;
}
/****************************************************************
※ 读取星期函数
※ 功能: 读取星期数据
※ 参数说明: rtc_getday () , 无参数
※ 返回值说明: 返回星期数据
****************************************************************/
unsigned char rtc_getday()
{
unsigned char day;
day=dataread(0x8b);
return day;
}
/****************************************************************
※ 读取年份函数
※ 功能: 读取年份数据
※ 参数说明: rtc_getyear () , 无参数
※ 返回值说明: 返回年份数据
****************************************************************/
unsigned char rtc_getyear()
{
unsigned char year,yeartemp;
yeartemp=dataread(0x8d);
year=yeartemp&0x0f;
yeartemp>>=4;
year=yeartemp*10+year;
return year;
}
/****************************************************************
※ 秒设置函数
※ 功能: 设置秒数据
该函数对错误的参数将不做任何操作
※ 参数说明: rtc_setsec (秒数据)
其中秒数据范围为0-59
※ 返回值说明: 无返回值
****************************************************************/
void rtc_setsec (unsigned char sec)
{
unsigned char sectemp,secold;
if (sec<=59)
{
secold=dataread (0x81);
sectemp=sec/10;
sectemp<<=4;
sectemp=sectemp|(sec%10);
secold&=0x80;
sectemp|=secold;
datawrite(0x80,sectemp);
}
}
/****************************************************************
※ 分设置函数
※ 功能: 设置分数据
该函数对错误的参数将不做任何操作
※ 参数说明: rtc_setmin (分数据)
其中分数据范围为0-59
※ 返回值说明: 无返回值
****************************************************************/
void rtc_setmin (unsigned char min)
{
unsigned char mintemp;
if (min<=59)
{
mintemp=min/10;
mintemp<<=4;
mintemp=mintemp|(min%10);
datawrite (0x82,mintemp);
}
}
/****************************************************************
※ 时设置函数
※ 功能: 设置小时数据
该函数对错误的参数将不做任何操作
※ 参数说明: rtc_sethour (小时数据)
其中小时数据范围为0-23(24小时制)或1-12(12小时制)
※ 返回值说明: 无返回值
****************************************************************/
void rtc_sethour (unsigned char hour)
{
unsigned char hourtemp,hourold;
hourold=dataread (0x85);
if (hourold&0x80)
{
if ((hour<=12)&&(hour!=0))
{
hourtemp=hour/10;
hourtemp<<=4;
hourtemp=hourtemp|(hour%10);
hourold&=0xa0;
hourtemp|=hourold;
datawrite(0x84,hourtemp);
}
}
else
{
if (hour<=23)
{
hourtemp=hour/10;
hourtemp<<=4;
hourtemp=hourtemp|(hour%10);
hourold&=0x80;
hourtemp|=hourold;
datawrite(0x84,hourtemp);
}
}
}
/****************************************************************
※ 设置上下午函数
※ 功能: 设置上下午数据
※ 参数说明: rtc_setap (上下午数据)
其中0-上午,1-下午
※ 返回值说明: 无返回值
****************************************************************/
void rtc_setap (unsigned char ap)
{
unsigned char apold;
apold=dataread (0x85);
if (ap)
datawrite (0x84,apold|0x20);
else
datawrite (0x84,apold&0xdf);
}
/****************************************************************
※ 日期设置函数
※ 功能: 设置日期数据
该函数对错误的参数将不做任何操作
※ 参数说明: rtc_setdate (日期数据)
其中日期数据范围为1-31
※ 返回值说明: 无返回值
****************************************************************/
void rtc_setdate (unsigned char date)
{
unsigned char datetemp;
if ((date<=31)&&(date!=0))
{
datetemp=date/10;
datetemp<<=4;
datetemp=datetemp|(date%10);
datawrite (0x86,datetemp);
}
}
/****************************************************************
※ 月份设置函数
※ 功能: 设置月份数据
该函数对错误的参数将不做任何操作
※ 参数说明: rtc_setmon (月份数据)
其中月份数据范围为1-12
※ 返回值说明: 无返回值
****************************************************************/
void rtc_setmon (unsigned char mon)
{
unsigned char montemp;
if ((mon<=31)&&(mon!=0))
{
montemp=mon/10;
montemp<<=4;
montemp=montemp|(mon%10);
datawrite (0x88,montemp);
}
}
/****************************************************************
※ 星期设置函数
※ 功能: 设置星期数据
该函数对错误的参数将不做任何操作
※ 参数说明: rtc_setday (星期数据)
其中星期数据范围为1-7
※ 返回值说明: 无返回值
****************************************************************/
void rtc_setday (unsigned char day)
{
if ((day<=7)&&(day!=0))
datawrite (0x8a,day);
}
/****************************************************************
※ 年份设置函数
※ 功能: 设置年份数据
该函数对错误的参数将不做任何操作
※ 参数说明: rtc_setyear (年份数据)
其中年份数据范围为0-99
※ 返回值说明: 无返回值
****************************************************************/
void rtc_setyear (unsigned char year)
{
unsigned char yeartemp;
if (year<=99)
{
yeartemp=year/10;
yeartemp<<=4;
yeartemp=yeartemp|(year%10);
datawrite (0x8c,yeartemp);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -