📄 24lc65.c
字号:
/*---------------------------------------------------------------------------
调用方式:void Write24LC65(uint address,uchar ddata) ﹫2001/03/23
函数说明:在指定地址address(address<0x2000)写入一个字节ddata
-----------------------------------------------------------------------------*/
void Write24LC65(uint address,uchar ddata)
{
EA=0;
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(0xae); //写从地址
ACK();
write_8bit(address>>8);
ACK();
write_8bit(address&0x00FF);
ACK();
write_8bit(ddata);
ACK();
SDA=0;_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_
();SDA=1; //STOP
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
EA=1;
delay(10);
}
/*------------------------------------------------------------------------------
调用方式:uchar Read24LC65(uint address) ﹫2001/03/23
函数说明:读取24LC65指定地址address(address<0x2000)的数据。
------------------------------------------------------------------------------*/
uchar Read24LC65(uint address)
{
uchar ddata=0;
uchar i=8;
EA=0;
SDA=0;_nop_();SCL=0; //START
write_8bit(0xae); //写从地址
ACK();
write_8bit(address>>8);
ACK();
write_8bit(address&0x00FF);
ACK();
//以上是一个“哑”写操作,相当于设置当前地址
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(0xaf); //写从地址,置为读模式
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
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
EA=1;
delay(5);
return ddata;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -