时钟芯片HT1380 操作源码(2)

/********************************************************************
*
* 名称: HT1380SetTime
* 说明:
* 功能: 设置初始时间
* 调用: HT1380WriteByteAddr()
* 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年
* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
* 返回值: 无
***********************************************************************/
void HT1380SetTime(uint8 *pSecDa)
{
  uint8 i;
  uint8 ucAddr = 0x80;
 
  HT1380WriteByteAddr(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
  for(i = Long_ReadData;i>0;i--)
  {
    HT1380WriteByteAddr(ucAddr,*pSecDa); /* 秒 分 时 日 月 星期 年 */
   
    pSecDa++;
    ucAddr += 2;
  }
  HT1380WriteByteAddr(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
}
/********************************************************************
*
* 名称: HT1380ReadTime
* 说明:
* 功能: 读取HT1381当前时间
* 调用: HT1380ReadByteAddr()
* 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年
* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
* 返回值: 无
***********************************************************************/
void HT1380ReadTime(uint8 *ucCurtime)
{
    uint8 i;
    uint8 ucAddr = 0x81;
 
    for (i=0;i<Long_ReadData;i++)
    {
      *ucCurtime = HT1380ReadByteAddr(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
      ucCurtime ++;
      ucAddr += 2;
    }
}
//*************************************
// 函数名称:CmdHT1380
// 函数功能:控制1380的数据读、写
// 入口参数:无
// 出口参数:无
// 返 回 值:无
//***************************************/
void Init_TH1380(void)
{
//  uint8 SetTime[3] = {04,04,12} ;
 
//  HT1380SetTime(SetTime) ;
 
  HT1380WriteByteAddr(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
 
  HT1380WriteByteAddr(0x80,HT1380OSC_ENB);//振荡允许
  HT1380WriteByteAddr(0x84,MCLOCK24H);//24小时制
 
  HT1380WriteByteAddr(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
}
//*************************************
// 函数名称:ClockSwitchMCU
// 函数功能:把时钟芯片的数据转换成显示数据
// 入口参数:时钟芯片内所读的数据
// 出口参数:实际显示的时间数据
// 返 回 值:无
//***************************************/
void ClockSwitchMCU(uint8 *ClockDat,uint8 *McuDat )
{
  *McuDat = ClockSwitch_TSEC(*ClockDat) ;
  ClockDat ++ ;
  McuDat ++ ;
  *McuDat = ClockSwitch_TMIN(*ClockDat) ;
  ClockDat ++ ;
  McuDat ++ ;
  *McuDat = ClockSwitch_THOR(*ClockDat) ; 
 
}
//*************************************
// 函数名称:MCUSwitchClock
// 函数功能:把显示的数据转换成时钟芯片内的可存储数据
// 入口参数:显示的时间数据
// 出口参数:时钟芯片内所存储的数据格式
// 返 回 值:无
//***************************************/
void MCUSwitchClock(uint8 *McuDat,uint8 *ClockDat)
{
  *ClockDat = ClockSwitchB_TSEC(*McuDat) ;
  ClockDat ++ ;
  McuDat ++ ;
  *ClockDat = ClockSwitchB_TMIN(*McuDat) ;
  ClockDat ++ ;
  McuDat ++ ;
  *ClockDat = ClockSwitchB_THOR(*McuDat) ; 
 
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ee74fcc841a6040a28f8748ee30e4dfd.html