switch (I2C0STAT & 0xF8)<br /> {<br /><br /> // 根据状态码进行相应的处理 <br /> case 0x08: //已发送起始条件.主发送和主接收都有 <br /> //--------------------------------------------------------<br /> // 装入从地址+读/写位(写SLA+W或者SLA+R) <br /> if(I2C_suba_en == 1)/* SLA+R */ //指定子地址读 <br /> { <br /> I2C0DAT = I2C_sla & 0xFE; //先写入地址 <br /> }<br /> else /* SLA+W */<br /> { <br /> I2C0DAT = I2C_sla; // 否则直接发送从机地址 <br /> }<br /> /* 清零SI位 */<br /> I2C0CONCLR = (1 << 3)| /* SI */<br /> (1 << 5); /* STA */<br /> break;<br /><br /> ...<br />以上程序是EASYARM2131板配套的I2C程序的中断服务部分,其中<br /> if(I2C_suba_en == 1)/* SLA+R */ //指定子地址读 <br /> { <br /> I2C0DAT = I2C_sla & 0xFE; //先写入地址 <br /> }<br />的意思是发送 从地址+读,I2C0DAT的最低位应为1才是呀,为什么是I2C_sla&0xFE呢,这样最低位不是0吗?不明白,请指点!<br /> |
|