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

i couldn't get output

// This is my Code but i couldn't get output plz verify code and reply me anyone
thanks in advance

#include"stdio.h"
#include"string.h"
#include"sfr_r81b.h"
#include"string.h"
#define w_address 0x0002;
#define write A0;
#define read A1;
void sett();
unsigned int i=0,k,l=0,x=0;
void main(void);
void write_eeprom(unsigned char c);
void read_eeprom(void);
void i2c_write(char c,char addr);
void i2c_read(void);
void I2C_delay(int l);
void start_i(void);
void stop(void);
void ack(void);
void nack(void);
void ursett();
//void i2cw(unsigned char k);
void eeprom_init(void);
unsigned char data,d,z=0;
void main(void)
{ sett(); eeprom_init(); ursett(); i2c_write('A',0x0001); I2C_delay(500); i2c_read();

while(1) {}
}

// System Clock settings
void sett()
{ prc0=1; // write enable cm0=0x08; cm13=1; // pin 4_6,4_7 x_in,x_out cm14=1; // low sp.on chip-off for(i=0;i<=255;i++) ocd0=1; ocd1=1; // osci.stop detection function enabled if(ocd3==1) // main clock stop asm("nop"); else asm("nop"); ocd2=0; // switch over to ext clock prc0=0;
}

// eeprom settings

void eeprom_init(void)
{ pd1_3=1; // direction for SDA pd1_1=1; // direction for SCL p1_3=1; // SDA is high p1_1=1; // SCL is high asm("nop"); asm("nop");
}

// Uart1 Settings

void ursett()
{ ucon=0x30; inten=0x00; u1mr=0x05; u1c0=0x00; ir_s1ric=0; s1ric=0x06; u1brg=0x81; asm("nop"); te_u1c1=1;

}

// Write Function

void i2c_write(char v,char add)
{ start_i(); write_eeprom(0xA0); // Device Address write A0; ack(); write_eeprom(0x00); // msb ack(); write_eeprom(0x01); // lsb ack(); write_eeprom('A'); // data ack(); stop();
}

// Read Function

void i2c_read(void)
{ start_i(); write_eeprom(0xA0); //Device Address write A0; ack(); write_eeprom(0x00); // msb //ack(); write_eeprom(0x01); // lsb ack(); //I2C_delay(50); start_i(); write_eeprom(0xA1); // Device Address write A1 ack();
// write_eeprom('A'); // data
// nack(); read_eeprom(); nack(); stop();
}

// Write Mode

void write_eeprom(unsigned char d)
{ unsigned char j; pd1_3=1; for(j=0;j<8;j++) { if((d & 0x80)==0x80) { I2C_delay(15); p1_3=1; } else if((d & 0x80)==0x00) { I2C_delay(15); p1_3=0; } I2C_delay(15); p1_1=1; I2C_delay(15); p1_1=0; I2C_delay(15); d=d<<1; } I2C_delay(30); p1_3=0; I2C_delay(15); p1_3=1;
}

// Read Mode

void read_eeprom(void)
{ unsigned char b=0; unsigned char r=0x00; pd1_3=0; for(b=0;b<8;b++) { I2C_delay(15); r=r<<1; r!=p1_3; p1_1=1; I2C_delay(15); p1_1=0; I2C_delay(15); } pd1_3=1; I2C_delay(15); p1_3=1; I2C_delay(15); p1_1=1; data=r; te_u1c1=1; u1tb=data; while(!ti_u1c1);

}

// Start Condition

void start_i(void)
{

if(p1_1 == 1) p1_1 = 0; I2C_delay(30); p1_3 = 1; // i2c start bit sequence p1_1 = 1; I2C_delay(30); p1_3 = 0; I2C_delay(30); p1_1 = 0;

}

// Stop Condition

void stop(void)
{ if(p1_1 == 1) p1_1 = 0; I2C_delay(30); p1_3 = 0; // i2c stop bit sequence p1_1 = 1; I2C_delay(30); p1_3 = 1; I2C_delay(30);
}

// Acknowledge Condition

void ack(void)
{ pd1_3 = 1; p1_3=0; //make ack bit to low I2C_delay(30); p1_1=1; // Check acknowledge I2C_delay(30); p1_1=0;
}

// Non Acknowledge Condition

void nack(void)
{ pd1_3 = 1; p1_3=1; //make ack bit to low I2C_delay(30); p1_1=1; //Check acknowledge I2C_delay(30); p1_1=0;

}

// I2C_delay function

void I2C_delay(int q)
{ int k=0,i=0; for(k=0;k<q;k++) { for(i=0;i<50;i++); }

}

0