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

📄 text1.c

📁 iic 写入数据测试 有详细的源代码! 希望可以帮助有需要的朋友
💻 C
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define addwr 0xa0	 //定义写数据地址
#define addrd 0xa1
#define	_nop_();

sbit sda=P2^0;
sbit scl=P2^1;
void delay(uint j)
{
	uchar i;
	for(;j>0;j--)
	for(i=0;i<125;i++);


}

//起始条件
void start()
{
	sda=1;
	scl=1;
	_nop_();_nop_();_nop_();_nop_();
	sda=0;
	_nop_();_nop_();_nop_();_nop_();
}

//停止条件
void stop()
{
	sda=0;
	scl=1;
	_nop_();_nop_();_nop_();_nop_();
	sda=1;
	_nop_();_nop_();_nop_();_nop_();
}

//应答位
void ack()
{
	sda=0;
	_nop_();_nop_();_nop_();_nop_();
	scl=1;
		_nop_();_nop_();_nop_();_nop_();
	scl=0;
}	

//反向应答位

void noack()
{
	sda=1;
		_nop_();_nop_();_nop_();_nop_();
	scl=1;
		_nop_();_nop_();_nop_();_nop_();
	scl=0;
}

//发送数据子程序

void send (uchar date)
{
	uchar bitcouter=8;
	uchar temp;
	do
	 {
	 
		temp=date;
		scl=0;
			_nop_();_nop_();_nop_();_nop_();
		if((temp&0x80)==0x80)//如果最高位是1
		sda=1;
		else 
		sda=0;
		
		scl=1;
			_nop_();_nop_();_nop_();_nop_();
		date=date<<1;
		bitcouter--;
	 }while(bitcouter);
		scl=0;
}

//读一字节的数据
uchar read()
{
	uchar temp=0;
	uchar temp1=0;
	uchar bitcounter=8;
	sda=1;
	do{
		scl=0;
			_nop_();_nop_();_nop_();_nop_();
		scl=1;
			_nop_();_nop_();_nop_();_nop_();
temp=temp<<1;
		if(sda)
		temp=temp|0x01;
		else
		temp=temp&0xfe;
		//temp=temp<<1;
		bitcounter--;
	  }while(bitcounter);
return(temp);


}

void wrtorom(uchar date[],uchar address,uchar num)
{
	uchar i;
	uchar*pdate;
	pdate=date;
	for(i=0;i<num;i++)
		{
			start();
			send(0xa0);
			ack();
			send(address+i);
			ack();

			send(*(pdate+i));
			ack();
			stop();
			delay(20);
						
		}
}

void rdfromrom(uchar date[],uchar address,uchar num)
{
	uchar i;
	uchar*pdate;
	pdate=date;
	for(i=0;i<num;i++)
		{
			start();
			send(0xa0);
			ack();
			send(address+i);
			ack();
			start();
			send(0xa1);
			ack();
			*(pdate+i)=read();
			scl=0;
			noack();
			stop();
			
	
		}

}

void main()
{
	uchar i;
	uchar number[8]={0xaa,0xfe,0x55,0xfc,0xd4,0xf2,0x56,0x88};

//    uchar number1[8];
	wrtorom(number,0,8);
	delay(30);
	number[0]=0;
	number[1]=0;

	rdfromrom(number,0,8);
   	for(i=0;i<8;i++)
	{
 	P1=number[i];
 //	P1=numbe1[i];

 //	uchar number1[8]=number[i];
	delay(4000);

	}
delay(400);
delay(400);
//delay(4000);
//P1=number[2];
delay(400);
delay(400);
	
}

⌨️ 快捷键说明

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