?? ds1302.h
字號:
/***************************************************************************
* DS1302時鐘芯片驅動函數庫
* Author:Xieqin
* CopyRight:2004/06/22
***********************************************************************/
sbit T_CLK = P1^2; //時鐘脈沖口
sbit T_IO = P1^1; //數據口
sbit T_RST = P1^0; //復位口
void WriteByte(unsigned char dat)//寫字節函數
{ //dat=待寫入地址
unsigned char i;
unsigned char x=0x01;
for(i=0; i<8; i++)
{
T_CLK = 0; //準備構造上跳沿
if((dat & x)==0)
T_IO=0;
else
T_IO=1;
T_CLK = 1; //構造上跳沿,讀入數據
x=x<<1;
}
}
unsigned char ReadByte(void)//讀字節函數
{
unsigned char i,x=0x01;
unsigned char dat=0x00;
for(i=0; i<8; i++)
{
T_CLK = 1;
T_CLK = 0;
if(T_IO==1)
dat|=x;
x<<=1;
}
return dat;
}
void Write1302(unsigned char address, unsigned char dat)//向DS1302寫字節函數
{ //address=DS1302內部寄存器或RAM地址,dat=待寫入數據
T_RST = 0;
T_CLK = 0;
T_RST = 1;
WriteByte(address); /* 地址,命令 */
WriteByte(dat); /* 寫1Byte數據*/
T_CLK =0;
T_RST =0;
}
unsigned char Read1302(unsigned char address)//從DS1302讀字節函數
{ //address=DS1302內部寄存器或RAM地址
unsigned char dat;
T_RST = 0;
T_CLK = 0;
T_RST = 1;
WriteByte(address); /* 地址,命令 */
dat = ReadByte(); /* 讀1Byte數據 */
T_CLK = 0;
T_RST =0;
return dat;
}
void SetTimer(unsigned char *Timer)
{ //*Timer=時間存放單元地址
unsigned char i;
unsigned char address = 0x80;
Write1302(0x8e,0x00); /* 控制命令,WP=0,寫操作*/
for(i =0;i<7;i++)
{
Write1302(address,*Timer++); /* 秒 分 時 日 月 星期 年 */
address +=2;
}
Write1302(0x8e,0x80);
}
void GetTimer(unsigned char *Timer)//從DS1302讀取時間函數
{ //*Timer=時間存放單元地址
unsigned char i;
unsigned char address = 0x81;
for (i=0;i<7;i++)
{
*Timer++ = Read1302(address);/*格式為: 秒 分 時 日 月 星期 年 */
address += 2;
}
}
void WriteRAM(unsigned char address,unsigned char *dat,unsigned char n)//寫RAM函數
{
unsigned char i;
unsigned char addr=0xc0|(address<<1);
for(i=0;i<n;i++)
{
Write1302(addr,*dat++);
addr+=2;
}
}
void ReadRAM(unsigned char address,unsigned char *dat,unsigned char n)//讀RAM函數
{
unsigned char i;
unsigned char addr=0xc1|(address<<1);
for(i=0;i<n;i++)
{
*dat++=Read1302(addr);
addr+=2;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -