📄 ds1307.c
字号:
#include "REG51F.H"
#include "ds1307.H"
#include <stdio.h>
/***********************1307*********************/
#define USER_SNR 0x10 //1307 address
#define WR1307 0xD0
#define RD1307 0xD1
sbit SCL = P1^3;
sbit SDA = P1^7;
bit cart;
unsigned char dell=2;
bit tflag;
extern unsigned char cardstate,b,bitnum,bytenum ;
/***********************************************************************
* void Delay5(void) *
***********************************************************************/
void Delay5(void) // 5 us
{
unsigned char data i;
for(i=0;i<10;i++);
}
/***********************************************************************
* I2c BUS Related sbit SCL= P1^0; sbit SDA = P1^1; *
***********************************************************************/
/*void Delay5(void) // 5 us
{ unsigned char data i;
for(i=0;i<8;i++);
}*/
void Start(void)
{ SDA=1;SCL=1;Delay5();SDA=0;Delay5();SCL=0; }
void Stop(void)
{ SDA=0;Delay5();SCL=1;Delay5();SDA=1;Delay5(); }
void SendByte(unsigned char b)
{
unsigned char i;
unsigned char bb=0x80;
for(i=0;i<8;i++)
{
SDA=b&bb;
bb>>=1;
Delay5();
SCL=1;
Delay5();
SCL=0;
}
Delay5();
SCL=1;
Delay5();
SCL=0;
Delay5();
}
unsigned char ReceByte(bit ack)
{
unsigned char i;
unsigned char b=0;
for(i=0;i<8;i++)
{
Delay5();
SDA=1;
SCL=1;
Delay5();
b=2*b+(unsigned char)SDA;
SCL=0;
}
SDA=ack; //ACK
Delay5();
SCL=1;
Delay5();
SCL=0;
Delay5();
return b;
}
/**************************************************
* DS1307 relate Functons *
**************************************************/
void Init_1307(unsigned char control)
{ Start();
SendByte(WR1307);
SendByte(0x07);
SendByte(control);
Stop();
}
void GetTime(unsigned char *t)
{ unsigned char data i;
//TOGGLE_WD();
Start();
SendByte(WR1307);
SendByte(0x00);
Start();
SendByte(RD1307);
for(i=6;i>0;i--)t[i] = ReceByte(0);
t[0] = ReceByte(1);
Stop();
}
void SetTime(unsigned char *t)
{ unsigned char data i;
// TOGGLE_WD();
Start();
SendByte(WR1307);
SendByte(0x00);
for(i=0;i<7;i++)SendByte(t[6-i]);
Stop();
}
unsigned char Rd1307(unsigned char Adrr)
{ unsigned char b;
//TOGGLE_WD();
Start();
SendByte(WR1307);
SendByte(Adrr);
Start();
SendByte(RD1307);
b=ReceByte(1);
Stop();
return(b);
}
void Wr1307(unsigned char Addr,unsigned char b)
{ // TOGGLE_WD();
Start();
SendByte(WR1307);
SendByte(Addr);
SendByte(b);
Stop();
}
void T1307(void) interrupt 2 using 0
{
// unsigned char i;
EX1 = 0 ; //close INT0
tflag=1;
EX1 = 1 ; //open INT0
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -