📄 ds1302驱动结束.txt
字号:
DS1302驱动程序
吾人 发表于 2007-6-22 11:15:00
/*DS1302驱动程序 **********************************************/
/*版本 V1.0 **********************************************/
/*2007-6-22 **********************************************/
/*吾人 **********************************************/
/*属个人原创 转载请注明出处! 谢谢*********************/
/*DS1302控制寄存器*******************************************/
/*寄存器名--写--读--取值范围 --[7-----6--5---4--3--2--1--0]*/
/*秒 --80--81---00-59 --[CH----{10SEC }--{--SEC-- }]*/
/*分钟 --82--83---00-59 --[0 ----{10MIN }--{--MIN-- }]*/
/*小时 --84--85---0-12/23 --[12/24-0-10AP-HR-{ --HR-- }]*/
/*日期 --86--87---1-28/29/30-[0 ----0-{10DAT}-{-DATAE- }]*/
/*月份 --88--89---01-12 --[0-----0--0--10M-{-MONTH- }]*/
/*周日 --8A--8B---01-07 --[0-----0--0---0--0-{-DAY- }]*/
/*年份 --8C--8D---00-99 --[{ -10YEAR- }-{-YEAR- }]*/
/************************************************************/
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
#define ds1302_set0(x) x=0
#define ds1302_set1(x) x=1
sbit ds1302_rst=P1^0;
sbit ds1302_sclk=P1^1;
sbit ds1302_io=P1^2;
void ds1302_initial();
void ds1302_senddata(uchar dsend);
uchar ds1302_receivedata(void);
void ds1302_initial()
{
ds1302_set0(ds1302_rst);
ds1302_set0(ds1302_sclk);
ds1302_set0(ds1302_io);
}
void ds1302_senddata(uchar dsend)
{
uchar i;
for(i=0;i<8;i++)
{
ds1302_set0(ds1302_sclk);
ds1302_io=(bit)(dsend&0x01);
ds1302_set1(ds1302_sclk);
dsend=dsend>>1;
}
}
uchar ds1302_receivedata(void)
{
uchar i,dat=0;
for(i=0;i<8;i++)
{
dat=dat>>1;
ds1302_set0(ds1302_sclk);
if(ds1302_io) dat=dat|0x80;
else dat=dat&0x7f;
ds1302_set1(ds1302_sclk);
}
return dat;
}
/*DS1302驱动结束******************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -