iic_1.h

来自「模块化的i2c总线接口驱动程序!!!!!!!!!!!!」· C头文件 代码 · 共 122 行

H
122
字号
/*         File Name: IIC_1.h 
    	   Created by 倔强草 
           Date: 2009-02-05
站在网友的肩上whzhou2007@163.com
同道中人make friends with me:QQ 384925493    
*/
#define uchar unsigned char
sbit SDA=P1^5;
sbit SCL=P1^4;

/*延时*/
void delay()
{;;}

void delay1(uchar z)
{
	uchar x,y;
	for(x=z;x>0;x--)
	for(y=100;y>0;y--);	
}   

void init()		//初始化
{
	SCL=1;
	delay();
	SDA=1;
	delay();
}
void start()	    //启动信号
{
	SDA=1;
	delay();
	SCL=1;
	delay();
	SDA=0;
	delay();
}
void stop()		//停止信号
{
	SDA=0;
	delay();
	SCL=1;
	delay();
	SDA=1;
	delay();
}
void respons()		//回应信号
{
	uchar i=0;SCL=1;delay();
while((SDA==1)&&(i<255))i++;
	SCL=0;delay();}
void writebyte(uchar date)//	写一个字节
{
	uchar i,temp;
	temp=date;
	for(i=0;i<8;i++)
	{
		temp=temp<<1;
		SCL=0;
		delay();
		SDA=CY;
		delay();
		SCL=1;
		delay();	
	}
	SCL=0;
	delay();
	SDA=1;
	delay();
}
uchar readbyte()
//读一个字节
{
	uchar i,j,k;
	SCL=0;
	delay();
	SDA=1;
	for(i=0;i<8;i++)
	{
		SCL=1;
		delay();
		if(SDA==1)
		  j=1;
		else
		  j=0;
		k=(k<<1)|j;
		SCL=0;
		delay();
	}
	delay();
	return k;
}
void write_add(uchar address,uchar info)
//指定地址写一个字节数据
{
	start();
	writebyte(0xa0);
	respons();
	writebyte(address);
	respons();
	writebyte(info);
	respons();
	stop();
}

uchar read_add(uchar address)
//指定地址读一个字节数据
{
	uchar dd;
	start();
	writebyte(0xa0);
	respons();
	writebyte(address);
	respons();
	start();
	writebyte(0xa1);
	respons();
	dd=readbyte();
	stop();
	return dd;
}

⌨️ 快捷键说明

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