24c01a.c

来自「24C01的读写程序」· C语言 代码 · 共 122 行

C
122
字号
delay()
{
unsigned int i=1200;
while(i--);
}
delay1(unsigned char i)
{
  while(i--)
  {
  		_nop_();
  }
}
/*----------------------------------------------------------------------------
调用方式:write_8bit(unsigned char ch)  ﹫2001/03/23
函数说明:内函数,私有,用户不直接调用。
-------------------------------------------------------------------------------
*/
void  write_8bit(unsigned char ch)
{
    unsigned char i=8;
    SCL=0;
    delay1(5);
    while (i--)
    {
        SDA=(bit)(ch&0x80);
        delay1(5);
        ch<<=1;
        SCL=1;
        delay1(5);
        SCL=0;
        delay1(5);
    }
    delay1(10);
}

/*------------------------------------------------------------------------------
调用方式:void ACK(void)  ﹫2001/03/23
函数说明:内函数,私有,用户不直接调用。
-------------------------------------------------------------------------------
*/
void ACK(void)
{
   unsigned char time_1;
    SDA=1;
    SCL=0;
    delay1(5);
    SCL=1;
    time_1=30;
    while(SDA) {if (!time_1) break;} //ACK
    SCL=0;
    delay1(10);
}
/*;停止24C01时序*/
void IICStart(void)
{
SCL=0;                  //
SDA=1;
SCL=1;
_nop_();
_nop_();
_nop_();
SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
SCL=0;
//SDA=1;                  //
}
/*;停止24C01时序*/
void Stop()
{
SDA=0;
SCL=1;
SDA=1;
}
unsigned char ReadIIC_24C01(unsigned char address)
{
      unsigned char ddata=0;
      unsigned char i=8;
	 IICStart();
	 write_8bit(0xa0);
	 ACK();
    write_8bit(address);   //写页地址和操作方式
    ACK();
	 IICStart();
	 write_8bit(0xa1);
	 ACK();
    while (i--)
    {
        SDA=1;
        ddata<<=1;
        SCL=0;
		  delay1(5);
		  SCL=1;
        if (SDA) ddata|=0x01;
    }
	 Stop();
    SCL=0;_nop_();SCL=1;delay1(6);
    SDA=0;_nop_();SCL=1;delay1(6);
    SDA=1;   //STOP
    delay();
    return ddata;

}
void WriteIIC_24C01(unsigned char address,unsigned char ddata)
{

    IICStart();
	 write_8bit(0xa0);
	 ACK();
	 write_8bit(address);
	 ACK();
    write_8bit(ddata); 
    ACK();
    write_8bit(ddata);      //发送数据
    ACK();
    Stop();
    delay();
}

/***********以上是***写24C01一个字节函数***************/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?