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