ds1302的c语言程序,单片机控制ds1302的时钟C程序

/************************************************

*

* 名称: 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);

}

2936547a77771607184bbd002cfb94bb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值