调用方式:void ACK(void) ﹫2001/03/23

函数说明:内函数,私有,用户不直接调用。

-------------------------------------------------------------------------------

*/

void ACK(void)

{

unsigned char time_1;

SDA=1;

SCL=0;

_nop_();_nop_();_nop_();_nop_();_nop_();

SCL=1;

time_1=5;

while(SDA) {if (!time_1) break;} //ACK

SCL=0;

_nop_();_nop_();_nop_();_nop_();_nop_();

}

unsigned char ReadIIC_24C01(unsigned char address)

{

unsigned char ddata=0;

unsigned char i=8;

SCL=1;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //Tsu:STA

SDA=0;

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //Thd:STA

SCL=0; //START

write_8bit( (address《《1) | 0x01); //写页地址和操作方式

ACK();

while (i--)

{

SDA=1;

ddata《《=1;

SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();SCL=1;

if (SDA) ddata|=0x01;

}

SCL=0;_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

SDA=0;_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

SDA=1; //STOP

delay();

return ddata;

}

void WriteIIC_24C01(unsigned char address,unsigned char ddata)

{

SCL=1;

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //Tsu:STA

SDA=0;

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //Thd:STA

SCL=0; //START

write_8bit( (address《《1) & 0xfe); //写页地址和操作方式,对于24C32-

24C256,page不起作用

ACK();

write_8bit(ddata); //发送数据

ACK();

SDA=0;

_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();