⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.bak

📁 I2c实现对AT24C16写入1至8的ASCII码
💻 BAK
字号:
#include "I2C.h"

/**********************************************************************
*	I2C_Delay()
*	Delay
**********************************************************************/
void I2C_Delay(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
}

/**********************************************************************
*	void I2C_Start(void)
*	Start the i2c device
**********************************************************************/
void I2C_Start(void)
{
	SDA=1;SCL=1;	// pull up
    I2C_Delay();

    SDA=0;
    I2C_Delay();
    SCL=0;			// Start
}

/**********************************************************************
*	I2C_Stop()
*	Stop
**********************************************************************/
void I2C_Stop()
{
	SDA=0;SCL=1;
    I2C_Delay();

    SDA=1;
    I2C_Delay();
    SCL=0;
}

/**********************************************************************
*	I2C_ACK()
*	ACK
**********************************************************************/
void I2C_SACK()
{
	SDA=0;SCL=1;
    I2C_Delay();

    SCL=0;SDA=1;
}

/**********************************************************************
*	I2C_NACK()
*	ACK
**********************************************************************/
void I2C_SNACK()
{
	SDA=1;SCL=1;
    I2C_Delay();

    SCL=0;SDA=0;
}

/**********************************************************************
*	I2C_CACK()
*	Check ACK
**********************************************************************/
bit I2C_CACK()
{
	bit bitTemp;
	SDA=1; // wait input
    SCL=1; // 9th pulse
    I2C_Delay();
	I2C_Delay();
	if(SDA)
    	bitTemp= 1;
    else
    	bitTemp= 0;
    SCL=0;
    return bitTemp;
}

/**********************************************************************
**********************************************************************/
void I2C_WriteOneByte(unsigned char tData) 	// first Hight Bit.
{
    unsigned char i=8;
	while(i--)
    {
    	if(tData&0x80)
        	{SDA=1;SCL=1;I2C_Delay();SCL=0;SDA=0;}
        else
			{SDA=0;SCL=1;I2C_Delay();SCL=0;}
		tData<<=1;
	}
}

/**********************************************************************
**********************************************************************/
unsigned char I2C_ReadOneByte()				// first Hight Bit
{

    unsigned char i=8,tData=0;
	while(i--)
    {
    	tData<<=1;
    	SDA=1;SCL=1;
    	if(SDA)tData|=0x01;
        I2C_Delay();SCL=0;
	}
    return tData;
}

/**********************************************************************
*	DeviceAddr=SLA
*	ByteAddr=addr
**********************************************************************/
unsigned char I2C_ReadEEPROM_OneByte(unsigned char SLA,unsigned char addr)
{
	unsigned char tdata;
	bit bitACK=1;

    I2C_Start();
    I2C_WriteOneByte(SLA&(~(0x01)));	// Write device
    bitACK=I2C_CACK();
    I2C_WriteOneByte(addr);
    bitACK=I2C_CACK();
	I2C_Start();
	I2C_WriteOneByte(SLA|0x01); 		// read deviece
    bitACK=I2C_CACK();
	tdata=I2C_ReadOneByte();
	I2C_Stop();
	return tdata;
}

/**********************************************************************
**********************************************************************/
void I2C_WriteEEPROM_OneByte(unsigned char SLA,unsigned char addr,unsigned char tdata)
{
	bit bitACK=1;

	I2C_Start();
    I2C_WriteOneByte(SLA&(~(0x01)));	// write device
    bitACK=I2C_CACK();
    I2C_WriteOneByte(addr);
	bitACK=I2C_CACK();
	I2C_WriteOneByte(tdata);
	bitACK=I2C_CACK();
    I2C_Stop();
}
/**********************************************************************
**********************************************************************/
/*
void I2C_WriteEEPROM_OnePage(unsigned char SLA,unsigned char page,unsigned char *buff,unsigned int length)
{
;;;;;
}
*/
/**********************************************************************
**********************************************************************/

/*
void I2C_ReadEEPROM_OnePage(unsigned char SLA,unsigned char page,unsigned char *buff,unsigned int length)
{
;;;;;
}
*/



⌨️ 快捷键说明

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