读写24C256的程序问题

[复制链接]
2397|4
 楼主| wangmengl 发表于 2007-11-9 16:21 | 显示全部楼层 |阅读模式
是用avr通过I2C写的,<br />(1)I2CWrite(Addr&nbsp;&gt&gt&nbsp;8)中的Addr&nbsp;&gt&gt&nbsp;8是什么意思?为什么要右移8位?<br />(2)I2CWrite(Addr&nbsp;&&nbsp;0xFF)&nbsp;是什么意思?<br />请教高手们!<br /><br />BYTE&nbsp;I2CSendAddr(UINT16&nbsp;Addr)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;I2CStart();<br />&nbsp;&nbsp;&nbsp;&nbsp;I2CWait();<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(I2CState()&nbsp;==&nbsp;TWI_SEND_START&nbsp;||<br />&nbsp;&nbsp;&nbsp;&nbsp;I2CState()&nbsp;==&nbsp;TWI_SEND_RESTART)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;I2CWrite(I2C_ADDR_BASE);<br />&nbsp;&nbsp;&nbsp;&nbsp;I2CWait();<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(I2CState()&nbsp;==&nbsp;TWI_SEND_ADDR_ACK)&nbsp;{<br />#ifdef&nbsp;&nbsp;&nbsp;&nbsp;SUPPORT_I2C_24C256<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2CWrite(Addr&nbsp;&gt&gt&nbsp;8);//?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2CWait();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(I2CState()&nbsp;==&nbsp;TWI_SEND_DATA_ACK)<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2CWrite(Addr&nbsp;&&nbsp;0xFF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I2CWait();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(I2CState()&nbsp;==&nbsp;TWI_SEND_DATA_ACK)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />#ifdef&nbsp;&nbsp;&nbsp;&nbsp;DEBUG_WITH_PC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowDebugCMM(_c_IE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowDebugDec(4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />#ifdef&nbsp;&nbsp;&nbsp;&nbsp;DEBUG_WITH_PC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowDebugCMM(_c_IE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowDebugDec(3);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />#ifdef&nbsp;&nbsp;&nbsp;&nbsp;DEBUG_WITH_PC<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowDebugCMM(_c_IE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowDebugDec(2);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />#endif<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />#ifdef&nbsp;&nbsp;&nbsp;&nbsp;DEBUG_WITH_PC<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;ShowDebugCMM(_c_IE);<br />&nbsp;&nbsp;&nbsp;&nbsp;ShowDebugDec(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />#endif<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;FALSE;<br />}
john_light 发表于 2007-11-9 17:00 | 显示全部楼层

因为输入是两字节的地址

高地址先送。
 楼主| wangmengl 发表于 2007-11-10 08:22 | 显示全部楼层

谢谢!那Addr是不是器件内部子地址?

我要改成ARM来写的话,也是用2字节吧!
fantesy 发表于 2007-11-10 09:01 | 显示全部楼层

看看DATASHEET

你先看看资料啊,是用两字节写的,还有要看I2C协议,你就知道了!
 楼主| wangmengl 发表于 2007-11-12 08:44 | 显示全部楼层

好!那我先看看吧~!谢谢了

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

65

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部