کد:
unsigned char I2C_STATUS = 0xF8;
unsigned char I2C_MAS_STATUS = 0x00;
void I2C0_Init()
{
LPC_SC->PCONP |= (1<<7);
LPC_SC->PCLKSEL0 |= 0x0000C000;
LPC_PINCON->PINSEL1 |= 0x01400000;
LPC_PINCON->I2CPADCFG = 0x00000000;
LPC_I2C0->I2CONCLR = 0x0000007C;
LPC_I2C0->I2SCLL = 0xFA;
LPC_I2C0->I2SCLH = 0xFA;
LPC_I2C0->I2CONSET = 0x00000040;
//NVIC_EnableIRQ(I2C0_IRQn);
}
void I2C0_Start(void)
{
LPC_I2C0->I2CONSET = 0x00000020;
while((LPC_I2C0->I2CONSET & 0x08)!=0x08)
{
}
LCD_WR_STR(0,1,"Start TRan OK");
while(I2C_STATUS!=0x08)
{
I2C_STATUS = LPC_I2C0->I2STAT;
}
LPC_I2C0->I2CONCLR = 0x00000028;
LCD_WR_STR(0,2,"ST OK");
LPC_I2C0->I2DAT = AT24C256_WR_Add;
while((LPC_I2C0->I2CONSET & 0x08)!=0x08)
{
}
LCD_WR_STR(0,3,"INT OK");
while(I2C_STATUS!=0x18)
{
I2C_STATUS = LPC_I2C0->I2STAT;
}
LPC_I2C0->I2CONCLR = 0x00000028;
LCD_WR_STR(0,0," OK");
}
int main()
{
LCD_Init();
I2C0_Init();
I2C0_Start();
LCD_WR_STR(0,0,"Main Start");
while (1)
{
}
}
من از وقفه استفاده نمی کنم در عوض خودم بیت مربوط به وقفه رو مثل کد بالا چک می کنم