?? ds1308.h
字號:
#ifndef __DS1302_H__
#define __DS1302_H__
//#define uchar unsigned char
//#define uint unsigned int
uchar sec,min,hr,day,we,mn,ys;
sbit clk=P2^5;
sbit dat=P2^6;
sbit rst=P2^4;
sbit A0=ACC^0;
sbit A1=ACC^1;
sbit A2=ACC^2;
sbit A3=ACC^3;
sbit A4=ACC^4;
sbit A5=ACC^5;
sbit A6=ACC^6;
sbit A7=ACC^7;
//-------------------------------------------------------
void InputByte(uchar dd) //向ds1302 寫一個字節數據
{
uchar i;
ACC=dd;
for(i=8;i>0;i--)
{
dat=A0;
clk=1;
clk=0;
ACC=ACC>>=1;
}
}
//-------------------------------------------------------
uchar OutputByte(void) //ds1302 讀取一個字節的數據
{
uchar i;
dat=1;
for(i=8;i>0;i--)
{
ACC=ACC>>1;
A7=dat;
clk=1;
clk=0;
}
return(ACC);
}
//------------------------------------------------------------------------
void Write(uchar addr,uchar num) //向ds1302 指定地址寫一個字節數據
{
rst=0;
clk=0;
rst=1;
InputByte(addr);
InputByte(num);
clk=1;
rst=0;
}
//---------------------------------------------------------------------
uchar Read(uchar addr) //從ds1302指定地址讀取一個字節的數據
{
uchar dd=0;
rst=0;
clk=0;
rst=1;
InputByte(addr);
dd=OutputByte();
clk=1;
rst=0;
return(dd);
}
//--------------------------------------------------------------
uchar ReadSec()
{
uchar dd;
dd=Read(0x81);
return(dd);
}
//--------------------------------------------------------------
uchar ReadMin()
{
uchar dd;
dd=Read(0x83);
return(dd);
}
//--------------------------------------------------------------
uchar ReadHr()
{
uchar dd;
dd=Read(0x85);
return(dd);
}
//------------------------------------------------------------
uchar ReadWe()
{
uchar dd;
dd=Read(0x8b);
return(dd);
}
//------------------------------------------------------------
uchar ReadDay()
{
uchar dd;
dd=Read(0x87);
return(dd);
}
//------------------------------------------------------------
uchar ReadMn()
{
uchar dd;
dd=Read(0x89);
return(dd);
}
//------------------------------------------------------------
uchar ReadYs()
{
uchar dd;
dd=Read(0x8d);
return(dd);
}
//------------------------------------------------------------
void WriteSec(uchar num)
{
Write(0x80,num);
}
//-----------------------------------------------------------
void WriteMin(uchar num)
{
Write(0x82,num);
}
//-----------------------------------------------------------
void WriteHr(uchar num)
{
Write(0x84,num);
}
//-----------------------------------------------------------
void WriteDay(uchar num)
{
Write(0x86,num);
}
//-----------------------------------------------------------
void WriteMn(uchar num)
{
Write(0x88,num);
}
//-----------------------------------------------------------
void WriteWe(uchar num)
{
Write(0x8a,num);
}
//-----------------------------------------------------------
void WriteYs(uchar num)
{
Write(0x8c,num);
}
//-----------------------------------------------------------
void DisableWR(void) //write data,read 0
{
Write(0x8e,0x00);
}
//----------------------------------------------------------
void EnableWR(void) //can''d write,read data
{
Write(0x85,0x80);
}
void DS1308_init()
{
DisableWR();
EnableWR();
WriteSec(0x00); //寫入時間和日期
WriteMin(0x30);
WriteHr(0x12);
WriteDay(0x01);
WriteWe(0x03);
WriteMn(0x04);
WriteYs(0x09);
}
void read_DS1308()
{
sec=ReadSec(); //讀取時間和日期
min=ReadMin();
hr= ReadHr();
day=ReadDay();
we= ReadWe();
mn= ReadMn();
ys= ReadYs();
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -