📄 p8563.h
字号:
#include "I2C.H"
/***bcd_data(0)***/uchar bcd_data(uchar dat) //
{
uchar i=dat;
if(dat > 9)i=dat-6;
if(dat >25)i=i-6;
if(dat >41)i=i-6;
if(dat >57)i=i-6;
if(dat >73)i=i-6;
if(dat >89)i=i-6;
if(dat >105)i=i-6;
if(dat >121)i=i-6;
if(dat >137)i=i-6;
if(dat >153)i=i-6;
return i;
}
/***data_bcd(0)***/uchar data_bcd(uchar dat)
{
uchar i=dat;
if(dat >9)i=dat+6;
if(i >25)i=i+6;
if(i >41)i=i+6;
if(i >57)i=i+6;
if(i >73)i=i+6;
if(i >89)i=i+6;
if(i >105)i=i+6;
if(i >121)i=i+6;
if(i >137)i=i+6;
if(i >153)i=i+6;
return i;
}
///////////PCF8563 //////////////
uchar r_8563(uchar add)
{
uchar dat;
start();
wd(0XA2); ack();
wd(add); ack();
start();
wd(0xA3); ack();
dat=rd();
delay(2);
stop();
return (dat);
}
///////////PCF8563//////////////
cmd_8563(uchar add,uchar dat)
{
start();
wd(0XA2); ack();
wd(add); ack();
wd(dat); ack();
stop(); _nop_();
}
///////读取时间/////////
Get_Time(uchar *time1)
{
bit ea;
ea=EA;//EA=0;
time1[0]=bcd_data(r_8563(0x02)&0x7f);delay(100);//秒
time1[1]=bcd_data(r_8563(0x03)&0x7f);delay(100); //分
time1[2]=bcd_data(r_8563(0x04)&0x3f);delay(100); //小时
time1[3]=bcd_data(r_8563(0x05)&0x3f);delay(100); //日
time1[4]= r_8563(0x06)&0x7;delay(100); //星期
time1[5]=bcd_data(r_8563(0x07)&0x1f);delay(100); //月
time1[6]=bcd_data(r_8563(0x08)&0x7f);delay(100); //年
EA=ea;
}
//////设置时间////////
Set_Time(uchar *ti1)
{
bit ea;
ea=EA;//EA=0;
cmd_8563(0,0);delay(100); //非测试状态,时间开始运行。
cmd_8563(1,0);delay(100); //
cmd_8563(0x0d,0x80);delay(100);//时钟输出1024HZ
cmd_8563(0x02,data_bcd(ti1[0]));delay(100);//sec
cmd_8563(0x03,data_bcd(ti1[1]));delay(100);//min
cmd_8563(0x04,data_bcd(ti1[2]));delay(100);//hour
cmd_8563(0x05,data_bcd(ti1[3]));delay(100); //日
cmd_8563(0x06,data_bcd(ti1[4]));delay(100);//星期
cmd_8563(0x07,data_bcd(ti1[5]));delay(100);////月
cmd_8563(0x08,data_bcd(ti1[6]));delay(100); //年
EA=ea;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -