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

📄 iic.c

📁 模块化的i2c总线接口驱动程序!!!!!!!!!!!!
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
sbit sda=P3^7;
sbit scl=P3^6;
uchar a;

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

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


/*起始函数*/
void start()
{
	sda=1;
	delay();
	scl=1;
	delay();
	sda=0;
}

/*终止信号*/
void stop()
{
	sda=0;
	delay();
	scl=1;
	delay();
	sda=1;
}

/*应答信号*/
void respons()
{
	uchar i;
	scl=1;
	delay();
	while((sda==1)&&(i<250))i++;
	scl=0;
	delay();
}

/*总线初始化*/
void init()
{
	sda=1;
	delay();
	scl=1;
	delay();
}

/*写入一个字节*/
void write_byte(uchar date)
{
	uchar i,temp;
	temp=date;
	scl=0;
	delay();
	for(i=0;i<8;i++)	
		{
			temp=temp<<1;
			scl=0;
			delay();
			sda=CY;
			delay();
			scl=1;
			delay();
		//	scl=0;
		//	delay();
		}
	scl=0;
	delay();
	sda=1;
	delay();		
}

/*读一个字节*/
uchar read_byte()
{
	uchar i,j,k;
	scl=0;
	delay();
	sda=1;
	delay();
	for(i=0;i<8;i++)
	{
		scl=1;
		delay();
		if(sda==1)
			j=1;
		else
			j=0;

		k=(k<<1)|j;   //第一位读回来
		scl=0;
		delay();	
	}
	return k;
}

/*主函数*/
void main()
{
	init();
	start();
	write_byte(0xa0);  //写入方向1010000 0/1
	respons();
	write_byte(3);  //地址0~256
	respons();
	write_byte(0xfe);
	respons();
	stop();
	delay1(100);
	
	start();
	write_byte(0xa0);  //写入方向1010000 0/1
	respons();
	write_byte(3);  //地址0~256
	respons();
	start();
	write_byte(0xa1);  //换方向了,0xa1 从EEPROM读出数据 	
	respons();
	P0=read_byte();
	stop();
//	P0=a;
	while(1);		
}


⌨️ 快捷键说明

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