?? 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 + -