| 
 
| 我的IIC写AT24C64的程序,怎么写不进去,但是能读出来255,我是按照datasheet上的时序写的,第一次做这东西,是不是有问题啊,请各位大侠指点侠,谢谢了<br /><br /><br />void delay()<br />{ ;; }<br />void start()  //开始信号<br />{    <br />    sda=1;<br />    delay();<br />    scl=1;<br />    delay();<br />    sda=0;<br />    delay();<br />}<br /><br />void stop()   //停止<br />{<br />    sda=0;<br />    delay();<br />    scl=1;<br />    delay();<br />    sda=1;<br />    delay();<br />}<br /><br />void ack()  //应答<br />{<br />    unsigned char i;<br />    scl=1;<br />    delay();<br />    while((sda==1)&&(i<250))i++;<br />    scl=0;<br />    delay();<br />}<br /><br />void init()<br />{<br />    sda=1;<br />    delay();<br />    scl=1;<br />    delay();<br />}<br /><br />void write_byte(unsigned char date)<br />{<br />    unsigned char i,temp;<br />    temp=date;<br /><br />    for(i=0;i<8;i++)<br />    {<br />        temp=temp<<1;<br />        scl=0;<br />        delay();<br />        sda=CY;<br />        delay();<br />        scl=1;<br />        delay();<br />    }<br />    scl=0;<br />    delay();<br />    sda=1;<br />    delay();<br />}<br /><br />unsigned char read_byte()<br />{<br />    unsigned char i,k;<br />    scl=0;<br />    delay();<br />    sda=1;<br />    delay();<br />    for(i=0;i<8;i++)<br />    {<br />        scl=1;<br />        delay();    <br />        k=(k<<1)|sda;<br />        scl=0;<br />        delay();    <br />    }<br />    return k;<br />}<br /><br /><br />void write_add(unsigned int address,unsigned char date)//<br />{<br />    start();<br />    write_byte(0xa0);<br />    ack();<br />    write_byte(address/256);<br />    ack();<br />       write_byte(address%256);<br />       ack();<br />    write_byte(date);<br />    ack();<br />    stop();<br />}<br /><br />unsigned char read_add(unsigned int address)<br />{<br />    unsigned char date;<br />    start();<br />    write_byte(0xa0);<br />    ack();<br />    write_byte(address);<br />    ack();<br />    start();<br />    write_byte(0xa1);<br />    ack();<br />    date=read_byte();<br />    stop();<br />    return date;<br />}<br /> | 
 |