void i2c_ucd_config() { // Two blocks of 256 byte data unsigned char Block1[256],Block2[256]; int i,j; unsigned char k; //Initialize the blocks with 0x00 value. for(j=0;j<256;j++) { Block1[j]=0x00; Block2[j]=0x00; } //Start the I2C communication i2c_start(); //Unlock the flash Memory. i2c_write(0xC0); i2c_write(0x2E); i2c_write(0x02); for(i=0,k=0x00;i<256;i++,k++) { //Apply address to WADDR1 and WADDR2 and write data in WDATA1 (1 byte) //Lower Address i2c_write(0xC0); i2c_write(0x30); i2c_write(k); //Higher Address i2c_write(0xC0); i2c_write(0x31); i2c_write(0xE0); //Data Value i2c_write(0xC0); i2c_write(0x32); i2c_write(Block1[i]); } for(i=0,k=0x00;i<256;i++,k++) { //Lower Address i2c_write(0xC0); i2c_write(0x30); i2c_write(k); //Higher Address i2c_write(0xC0); i2c_write(0x31); i2c_write(0xE1); //Data Value i2c_write(0xC0); i2c_write(0x32); i2c_write(Block2[i]); } //Lock flash memory i2c_write(0xC0); i2c_write(0x2E); i2c_write(0x00); //Restart i2c_write(0xC0); i2c_write(0x2F); i2c_write(0x00); i2c_stop(); }