Toll-Free Customer Support 24/7

#include"reg52.h"
#include "intrins.h"
#include"stdio.h"

sbit sda=P3^3; //SDA line
sbit scl=P3^2;


#define DEV_WR 0xa0
#define DEV_RD 0xa1

char data_write[]="123456";

void delay();


void TRANSMIT(unsigned char *);
void transmit_byte(unsigned char);

void startbit();
unsigned char data_read();
void slaveaddr(unsigned char m) ;
void stopbit();
void INIT_SERIAL();
int i=0;
//**********************************************

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

void main()
{
unsigned char cmp=0,k;
INIT_SERIAL();

TRANSMIT("\n\r EERPOM 8051 \n\r");



for(i=0;i<6;i++)
{
startbit();
slaveaddr(DEV_WR);
slaveaddr(0x10+i);
slaveaddr(data_write[i]);
stopbit();
delay();
delay();
}

for( i=0;i<6;i++)
{
startbit();
slaveaddr(DEV_WR);
slaveaddr(0x10+i);
startbit();
slaveaddr(DEV_RD);
k = data_read();
delay();
stopbit();
transmit_byte(k);
}
while(1);
}



void delay()
{
{
long int x=300;
while(x--);
}
}
void INIT_SERIAL()
{
TMOD=0X20;
TH1=0XFD;
SCON=0X50;
TR1=1;
}
//***********************************************************//

void transmit_byte(unsigned char byte)
{
SBUF=byte;
while(!TI);
TI=0;
}

void TRANSMIT(unsigned char *string)
{
while(*string)
transmit_byte(*string++);
}

void startbit()

{
sda=1;
scl=1;
//delay();
_nop_();
_nop_();
sda=0;
//delay();
//delay();
_nop_();
_nop_();
_nop_();
_nop_();
scl=0;
_nop_();
_nop_();

}

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

void stopbit()
{

sda=0;
scl=1;
//delay();
_nop_();
_nop_();
sda=1;
//delay();
//delay();
_nop_();
_nop_();
_nop_();
_nop_();
scl=0;
//delay();
_nop_();
_nop_();
_nop_();
_nop_();
scl=1;


}

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

void slaveaddr(unsigned char m)
{
unsigned char i;
unsigned char b;
b=m;
//scl=1;
for(i=0;i<8;i++)
{
b= (b & 0x80);
if(b!=0)
sda=1;
else
sda=0;

scl=1;
//delay();
_nop_();
_nop_();
_nop_();
scl=0;
b=m<<1;
m=b;
}
sda=1;
scl=1;
//lay();
_nop_();
_nop_();
_nop_();
scl=0;
// delay();


}

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

unsigned char data_read()
{
unsigned char i,a1,b1=0;
sda=1;
for(i=0;i<8;i++)
{
scl=0;
//delay();
_nop_();
_nop_();
_nop_();
scl=1;
//delay(); _nop_();

if(sda==1)
b1=(b1 | 0x01);
a1=b1;
b1=b1<<1;
scl=0;
}
sda=1;
scl=1;
//delay();
_nop_();
_nop_();
_nop_();
scl=0;

return(a1);

}

Back to top