请教一个问题,请高手们指点下,谢谢

[复制链接]
2046|0
 楼主| 柳双红 发表于 2009-3-18 17:27 | 显示全部楼层 |阅读模式
我的IIC写AT24C64的程序,怎么写不进去,但是能读出来255,我是按照datasheet上的时序写的,第一次做这东西,是不是有问题啊,请各位大侠指点侠,谢谢了<br /><br /><br />void&nbsp;delay()<br />{&nbsp;;;&nbsp;}<br />void&nbsp;start()&nbsp;&nbsp;//开始信号<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;sda=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;scl=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;sda=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />}<br /><br />void&nbsp;stop()&nbsp;&nbsp;&nbsp;//停止<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;sda=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;scl=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;sda=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />}<br /><br />void&nbsp;ack()&nbsp;&nbsp;//应答<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;scl=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;while((sda==1)&&(i&lt250))i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;scl=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />}<br /><br />void&nbsp;init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;sda=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;scl=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />}<br /><br />void&nbsp;write_byte(unsigned&nbsp;char&nbsp;date)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i,temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp=date;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt8;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp=temp&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scl=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sda=CY;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scl=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;scl=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;sda=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />}<br /><br />unsigned&nbsp;char&nbsp;read_byte()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i,k;<br />&nbsp;&nbsp;&nbsp;&nbsp;scl=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;sda=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay();<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt8;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scl=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k=(k&lt&lt1)|sda;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scl=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delay();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;k;<br />}<br /><br /><br />void&nbsp;write_add(unsigned&nbsp;int&nbsp;address,unsigned&nbsp;char&nbsp;date)//<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;start();<br />&nbsp;&nbsp;&nbsp;&nbsp;write_byte(0xa0);<br />&nbsp;&nbsp;&nbsp;&nbsp;ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;write_byte(address/256);<br />&nbsp;&nbsp;&nbsp;&nbsp;ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_byte(address%256);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;write_byte(date);<br />&nbsp;&nbsp;&nbsp;&nbsp;ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;stop();<br />}<br /><br />unsigned&nbsp;char&nbsp;read_add(unsigned&nbsp;int&nbsp;address)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;date;<br />&nbsp;&nbsp;&nbsp;&nbsp;start();<br />&nbsp;&nbsp;&nbsp;&nbsp;write_byte(0xa0);<br />&nbsp;&nbsp;&nbsp;&nbsp;ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;write_byte(address);<br />&nbsp;&nbsp;&nbsp;&nbsp;ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;start();<br />&nbsp;&nbsp;&nbsp;&nbsp;write_byte(0xa1);<br />&nbsp;&nbsp;&nbsp;&nbsp;ack();<br />&nbsp;&nbsp;&nbsp;&nbsp;date=read_byte();<br />&nbsp;&nbsp;&nbsp;&nbsp;stop();<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;date;<br />}<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

0

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