/*********************************************************************
 *                Flowcode DS1307 Code
 *
 * File: PIC_Custom_DS130.c
 *
 *
 *
 ********************************************************************/

/*********************************************************************

 Return & parameter types:
   void
   unsigned char
   short
   unsigned char*

[MacroNames]
Count=6
1=DS1307Write
2=DS1307Read
3=WaitMSSP
4=ds1307_init
5=serial_init
6=putch

[MacroReturns]

1=void
2=unsigned char
3=void
4=void
5=void
6=void


[MacroIsPrivate]
1=0
2=0
3=0
4=0
5=0
6=0


[MacroParameters_DS1307Write]
Count=2
1=addr
2=data

[MacroParamTypes_DS1307Write]
1=unsigned char
2=unsigned char

[MacroParameters_DS1307Read]
Count=1
1=addr

[MacroParamTypes_DS1307Read]
1=unsigned char


[MacroParameters_WaitMSSP]
Count=0

[MacroParamTypes_WaitMSSP]


[MacroParameters_ds1307_init]
Count=0

[MacroParamTypes_ds1307_init]


[MacroParameters_serial_init]
Count=0

[MacroParamTypes_serial_init]


[MacroParameters_putch]
Count=1
1=Byte

[MacroParamTypes_putch]
1=unsigned char


 ********************************************************************/

/********************************************************************
 * ADDITIONAL CODE
 ********************************************************************/

/*InitialisationCode_Start*/
/*InitialisationCode_End*/


/*InterruptCode_Start*/
/*InterruptCode_End*/


/*DefinesCode_Start*/

#include <string.h>
#define LC01CTRLIN 0xd0 
#define LC01CTRLOUT 0xd1
#define BAUD 100
#define FOSC 4000
#include <stdio.h>

/*DefinesCode_End*/


/********************************************************************
 * FUNCTIONS
 ********************************************************************/



void DS1307Write(unsigned char addr, unsigned char data)
		{
/*Macro_DS1307Write_Start*/
			SEN=1;
           	WaitMSSP();
		    SSPBUF=LC01CTRLIN;
            WaitMSSP();
			SSPBUF=addr;
			WaitMSSP();
			SSPBUF=data;
			WaitMSSP();
			PEN=1;
        	WaitMSSP();
/*Macro_DS1307Write_End*/
	}

unsigned char DS1307Read(unsigned char addr)
		{
/*Macro_DS1307Read_Start*/
			  unsigned char x;
              RSEN=1;
              WaitMSSP();
              SSPBUF=LC01CTRLIN;
              WaitMSSP();
			  SSPBUF=addr;
	          WaitMSSP();
              RSEN=1;
	          WaitMSSP();
			  SSPBUF=LC01CTRLOUT;
	          WaitMSSP();
              RCEN=1;
              WaitMSSP();
              ACKDT=1;
              ACKEN=1;
              PEN=1;
              WaitMSSP();
			  x=SSPBUF;
              return(x);
/*Macro_DS1307Read_End*/
		}


void WaitMSSP()
{
/*Macro_WaitMSSP_Start*/
			      while(!SSPIF);
			      SSPIF=0;
/*Macro_WaitMSSP_End*/
}

void ds1307_init()
{
/*Macro_ds1307_init_Start*/
	TRISC3=1;
	TRISC4=1;
	SSPCON=0x28;
	SSPADD=(FOSC / (4 * BAUD)) - 1;
	SSPSTAT=80;
	PORTC=0x18;
//	DS1307Write(0,0x00);
/*Macro_ds1307_init_End*/

}

void serial_init()
{
/*Macro_serial_init_Start*/
	TRISC6=1;
	TRISC7=1;
	TXSTA=0x24;
	SPBRG=64;
	RCSTA=0x90;
	TXIF=1;
/*Macro_serial_init_End*/
}

/*void putch(unsigned char byte)
{
/*Macro_putch_Start*/

	while(!TXIF);
	TXREG = byte;
/*Macro_putch_End*/
}*/


