⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.h

📁 基于MSP430F149的ds1302驱动程序。
💻 H
📖 第 1 页 / 共 2 页
字号:
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 + -