Hey Linq, A good news infact for your valuable support , today I was able to comunicate with I2C , almost 90% is done . Can you help me out for these issues listed below .. the state where i get data ,i.e case 0x50 ( Data Recieved with ACK) : Master_Buff[Read_Index] = I2DAT ; Read_Index++; if(Read_Index != MAX_READ) { I21CONSET = 0x04 (ACK bit) } else { Read_Index = 0; I21CONSET = 0x10 (stop) } When I track Master_Buff 's value and use it within the Interrupt using UARTBYte out under CASE 0x50 , i get the correct data . When I track Master_Buff''s value outside the IRQ and use it in my main , i am not getting the data . To be noted that Master_Buff is a global variable , Then where should be the problem ??? Thanks for your support ! Looking forward, Samjith