This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Not Getting oputput

#include<reg51.h>
#include<stdio.h>

sbit check=P2^3;
sbit SDA = P2^0;
sbit SCL = P2^1;

//declare function

void delay(void);
void I2C_Start(void);
void I2C_Stop(void);
bit I2C_Write(unsigned char dat);
unsigned char I2C_Read(bit ack);

//RTC DS1307

//void rtc_write(unsigned char add , unsigned char dataa);
void rtc_read(char);

void main()
{
        while(1)
     {
                          char a,b,c,d,e,f;
                          a=0x00;
                          b=0x01;
                          c=0x02;
                          d=0x04;
                          e=0x05;
                          f=0x06;
                                rtc_read(a);
                                rtc_read(b);
                                rtc_read(c);
                                rtc_read(d);
                                rtc_read(e);
                                rtc_read(f);
     }
}
void delay(void)
{
        unsigned char i;
        for (i = 0; i < 20; i++)
        {
                        ;
        }
}
void I2C_Start(void)
{
         SDA=1;             // i2c start bit sequence
         delay();
         SCL=1;
         delay();
         SDA=0;
         delay();
         SCL=0;
         delay();
         P3=0x00;
}
void I2C_Stop(void)
{
  SDA=0;             // i2c stop bit sequence
  delay();
  SCL=1;
  delay();
  SDA=1;
  delay();
         P3=0x01;
}
bit I2C_Write(unsigned char dat)
{
        unsigned char i;
        bit outbit;
        for (i = 1; i <= 8; i++)
  {
    outbit=dat&0x80;
    SDA=outbit;
    dat = dat << 1;
    SCL=1;
    SCL=0;
   }
   SDA=1; // set SDA to receive Acknowledge
   SCL=0;
   outbit = SDA; // check busy or not
   SCL=0;
   return(outbit); // if outbit=1 ,A=1: error // if outbit=0 ,A=0: ok
         P3=0x03;
}
unsigned char I2C_Read(bit ack)
{
   unsigned char i, dat;
   bit inbit;
   dat = 0;
   for(i=1;i<=8;i++)
         {
                        SCL=1;
      inbit = SDA;
      dat = dat << 1;
      dat = dat | inbit;
      SCL=0;
                }
                if(ack)
                {
                        SDA=0; // set SDA = 0 (ACK)
                }
                else
                {
                        SDA=1; // set Non ACK
                }
                SCL=1;
    SCL=0;
    SDA=1; // Set SDA = 1 for next read
    delay();
    return(dat);
                P3=0x04;
}
void rtc_read(char add)
{
                bit ch1,ch2,ch3;
                unsigned char dataa ;
                I2C_Start();
                ch1=I2C_Write(0xd0); //
                check=ch1;
                ch2=I2C_Write(add); //
          check=ch2;
                I2C_Start(); // restart
                ch3=I2C_Write(0xd1); //
                check=ch3;
                dataa = I2C_Read(0);
                I2C_Stop();
                dataa = (dataa & 0x0f) + (dataa>>4)*10; //
                P1=dataa;
}

I have written this code for read value from rtc.I am not getting any syntax error but its not working.Someone pls help me to correct code and if I have made any logical error to write this code.