⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1307.c

📁 矿工定位系统单端
💻 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 + -