是用avr通过I2C写的,<br />(1)I2CWrite(Addr >> 8)中的Addr >> 8是什么意思?为什么要右移8位?<br />(2)I2CWrite(Addr & 0xFF) 是什么意思?<br />请教高手们!<br /><br />BYTE I2CSendAddr(UINT16 Addr)<br />{<br /> I2CStart();<br /> I2CWait();<br /> if (I2CState() == TWI_SEND_START ||<br /> I2CState() == TWI_SEND_RESTART) {<br /> I2CWrite(I2C_ADDR_BASE);<br /> I2CWait();<br /> if (I2CState() == TWI_SEND_ADDR_ACK) {<br />#ifdef SUPPORT_I2C_24C256<br /> <br /> I2CWrite(Addr >> 8);//?<br /> <br /> I2CWait();<br /> if (I2CState() == TWI_SEND_DATA_ACK)<br />#endif<br /> {<br /> I2CWrite(Addr & 0xFF);<br /> I2CWait();<br /> if (I2CState() == TWI_SEND_DATA_ACK) {<br /> return TRUE;<br /> }<br />#ifdef DEBUG_WITH_PC<br /> else {<br /> ShowDebugCMM(_c_IE);<br /> ShowDebugDec(4);<br /> }<br />#endif<br /> }<br />#ifdef DEBUG_WITH_PC<br /> else {<br /> ShowDebugCMM(_c_IE);<br /> ShowDebugDec(3);<br /> }<br />#endif<br /> }<br />#ifdef DEBUG_WITH_PC<br /> else {<br /> ShowDebugCMM(_c_IE);<br /> ShowDebugDec(2);<br /> }<br />#endif<br /> }<br />#ifdef DEBUG_WITH_PC<br /> else {<br /> ShowDebugCMM(_c_IE);<br /> ShowDebugDec(1);<br /> }<br />#endif<br /><br /> return FALSE;<br />} |
|