当前位置:首页 > 单片机 > 单片机
[导读]/**************************文件所用资源1.端口:P0.4,P0.5,P0.62.调用delay_ms函数**************************//***********************1302引脚定义***********************/sbit T_RST= P0^4;sbit T_DAT = P0^5

/**************************
文件所用资源
1.端口:P0.4,P0.5,P0.6
2.调用delay_ms函数
**************************/
/***********************
1302引脚定义
***********************/
sbit T_RST= P0^4;
sbit T_DAT = P0^5;
sbit T_CLK= P0^6;
/********************************
1302子程序区
********************************/
/*******************************
DS1302写入1字节数据
*******************************/
void write_1302_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
if(dat&0x01)T_DAT=1;
else T_DAT=0;
T_CLK=1;
dat=dat>>1;
T_CLK=0;
}//for
}
/*******************************
从DS1302读出1字节数据
*******************************/
uchar read_1302_byte()
{
uchar i,dat;
T_DAT=1;
for(i=0;i<8;i++)
{
dat=dat>>1;
if(T_DAT==1)dat=dat|0x80;
T_CLK=1;
T_CLK=0;
}//for
return dat;
}
/********************************
DS1302写入指令或数据
********************************/
void write_1302(uchar addr,uchar dat)
{
T_RST=0;//RST=0
T_CLK=0;//CLK=0
T_RST=1;//RST=1,启动数据传输

write_1302_byte(addr);
write_1302_byte(dat);

T_RST=0;//RST=0
}
/********************************
读DS1302里对应寄存器的数据
*********************************/
uchar read_1302(uchar addr)
{
uchar dat;

T_RST=0;//RST=0
T_CLK=0;//CLK=0
T_RST=1;//RST=1,启动数据传输

write_1302_byte(addr);
dat=read_1302_byte();

T_RST=0;//RST=0

return dat;
}
/******************************
读取1302的时间
时间数据放在形参数组里,依次为
年、星期、月、日、时、分、秒
*******************************/
void read_time(uchar *p)
{
uchar i;
for(i=0x8d;i>=0x81;i--)
{
*p++=read_1302(i);
i--;
}
}
/*****************************
初始化1302时间
时间数据放在形参数组里,依次为
年、星期、月、日、时、分、秒
******************************/
void write_time(uchar *p)
{
uchar i;

write_1302(0x8e,0x00);//允许写操作
for(i=0x8c;i>=0x80;i--)
{
write_1302(i,*p++);
i--;
}
write_1302(0x8e,0x80);//禁止写操作
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭