这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 设计工具 » DS1302时钟C程序

共1条 1/1 1 跳转至

DS1302时钟C程序

高工
2013-10-25 15:33:18     打赏

这是1302的C文件,1302.h文件在后来面

#include1302.h

code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年 最低位读写位

code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};

void Write_Ds1302_Byte(unsigned char temp)

{

unsigned char i;

for (i=0;i8;i++) //循环8次 写入数据

{

sclk=0;

io=temp0x01; //每次传输低字节

temp>>=1; //右移一位

sclk=1;

}

}

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

/* 写入DS1302 */

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

void Write_Ds1302( unsigned char address,unsigned char dat )

{

rst=0;

_nop_();

sclk=0;

_nop_();

rst=1;

_nop_(); //启动

Write_Ds1302_Byte(address); //发送地址

Write_Ds1302_Byte(dat); //发送数据

rst=0; //恢复

}

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

/* 读出DS1302数据 */

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

unsigned char Read_Ds1302 ( unsigned char address )

{

unsigned char i,temp=0x00;

rst=1;

_nop_();

_nop_();

Write_Ds1302_Byte(address);

for (i=0;i8;i++) //循环8次 读取数据

{

if(io)

temp|=0x80; //每次传输低字节

sclk=1;

temp>>=1; //右移一位

_nop_();

_nop_();

_nop_();

sclk=0;

}

rst=0;

_nop_(); //以下为DS1302复位的稳定时间

_nop_();

rst=0;

sclk=0;

_nop_();

_nop_();

_nop_();

_nop_();

/*sclk=1;

_nop_();

_nop_();

io=0;

_nop_();

_nop_();

io=1;

_nop_();

_nop_(); */

return (temp); //返回

}

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

/* 读时钟数据 */

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

uchar Read_RTC1(uchar j) //读取 日历

{

uchar c;

unsigned char *p;

p=read_rtc_address[j]; //地址传递

c=Read_Ds1302(*p);

c=(( c0x70)>>4)*10 + ( c0x0F);

return(c);

}

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

/* 设定时钟数据 */

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

void Set_RTC(uchar a,uint c) //设定 日历

{

unsigned char *p ,shi,ge ;

Write_Ds1302(0x8E,0X00);

shi=a/10;

ge=a%10;

a=shi*16+ge;

p=write_rtc_address[c]; //传地址

Write_Ds1302(*p,a) ;

// Write_Ds1302(0x8E,0x80);

} 、

这是头文件:

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit sclk=P1^2; //时钟

sbit io=P1^1; //数

sbit rst = P1^0;

void Set_RTC(uchar a,uint c);

uchar Read_RTC1(uchar j);




关键词: datasheet中文资料     datasheet p    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]