我用的是,LPC2364的IIC2,我用IIC2读写EEROM,AT24C16, 下面是我的中断程序,当系统执行中断一次之后就不执行中断了,请问为什么? void IIC2_isr(void) __irq { volatile BYTE state_value; state_value=I22STAT; switch(state_value) { case 0x08: //start service I22DAT=0XA0;//devive address I22CONCLR=0X28; IIC_STAT=I2C_STARTED; break; case 0x10: //Repeat start service IIC_start_clr(); IIC_SI_clr(); IIC_STAT=I2C_STARTED; break; case 0x18: //DATA transmitted & acknowledged I22DAT=0X00; I22CONCLR=0X08; IIC_STAT=ADD_ACK; break; case 0x28: //data transmitted & acknowledged I22DAT=0X00; I22CONCLR=0X08; IIC_STAT=DATA_ACK; break; } } 用示波器可以看到发送数据0XA0(device address),并且device有响应,但是之后进不了中断了(应该响应I22STAT=0x18),这时候的I22STAT为0xf8,请问为什么啊?哪位大哥可以为小弟检查一下程序,有什么不对的地方吗?
|