新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机控制ds1302的时钟C程序

单片机控制ds1302的时钟C程序

作者:时间:2012-12-05来源:网络收藏

/************************************************
*
* 名称: uc_BurstR1302R
* 说明: 先写地址,后读命令/数据(寄存器多字节方式)
* 功能: 读取DS1302寄存器数据
* 调用: v_RTInputByte() , uc_RTOutputByte()
* 输入: pReDa: 寄存器数据地址
* 返回值: 无
***************************************************/
/*void v_BurstR1302R(uchar *pReDa)
{
uchar i;
T_RST = 0;
T_CLK = 0;
T_RST = 1;
v_WTInputByte(0xff); //* 0xbf:时钟多字节读命令
for (i=31; i>0; i--) //*31Byte 寄存器数据
{
*pReDa = uc_RTOutputByte(); //* 读1Byte数据
pReDa++;
}
T_CLK = 1;
T_RST =0;
}*/
/************************************************
*
* 名称: v_Set1302
* 说明:
* 功能: 设置初始时间
* 调用: v_W1302()
* 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年
* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
* 返回值: 无
*****************************************************/
/*void v_Set1302(uchar *pSecDa)
{
uchar i;
uchar ucAddr = 0x80;
v_W1302(0x8e,0x00); // 控制命令,WP=0,写操作?
for(i =7;i>0;i--)
{
v_W1302(ucAddr,*pSecDa); //秒 分 时 日 月 星期 年
pSecDa++;
ucAddr +=2;
}
v_W1302(0x8e,0x80); // 控制命令,WP=1,写保护?
}*/
/**********************************************
*
* 名称: v_Get1302
* 说明:
* 功能: 读取DS1302当前时间
* 调用: uc_R1302()
* 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年
* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
* 返回值: 无
*****************************************************/
/*void v_Get1302(uchar ucCurtime[])
{
uchar i;
uchar ucAddr = 0x81;
for (i=0;i7;i++)
{
ucCurtime[i] = uc_R1302(ucAddr);//*格式为: 秒 分 时 日 月 星期 年
ucAddr += 2;
}
} */
/**************************************************
* 名称: Init1302
* 说明:
* 功能: 初始化DS1302
* 调用:
* 输入:
* 返回值: 无
*********************************************************/
void Init1302(void)
{
v_W1302(0x8e,0x00); //控制写入WP=0
v_W1302(0x90,0xa5);
v_W1302(0x80,0x00); //秒
v_W1302(0x82,0x59); //分
v_W1302(0x84,0x10); //时
v_W1302(0x86,0x01); //日
v_W1302(0x88,0x08); //月
v_W1302(0x8a,0x03); //星期
v_W1302(0x8c,0x07); //年*/
v_W1302(0x8e,0x80);
}
/******************************************************
* 名称: donetime
* 说明:
* 功能: 时间处理
* 调用:
* 输入:
* 返回值: 无
**************************************************************/
void donetime(void)
{
uchar d;
d=uc_R1302(0x81);
time[6]=d/16+48;
time[7]=d%16+48;
d=uc_R1302(0x83);
time[3]=d/16+48;
time[4]=d%16+48;
d=uc_R1302(0x85);
time[0]=d/16+48;
time[1]=d%16+48;
//bcd_int(d);
}

//
/*void bcd_int(uchar i)
{
uchar j;
time[0]=(i0x0f)+48;
j=i>>4;
time[1]=(j0x0f)+48;
} */
//
/*void bcdtoInt(void)
{
uchar i;
for(i=0;i7;i++)
bcd_int(ucCurtm[i]);
}*/
//
void SetTime(void)
{
v_W1302(0x8e,0x00);
v_W1302(0x80,0x80);
v_W1302(0x82,min);
v_W1302(0x84,hou);
v_W1302(0x86,day);
v_W1302(0x88,mon);
v_W1302(0x8c,yea);
v_W1302(0x80,0x00);
v_W1302(0x8e,0x80);
}


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭