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