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

📄 at24c.c

📁 at24c.c 自己写的,也带有proteus.方便大家学习!!!
💻 C
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char 
#define uint unsigned int
#define nop _nop_();_nop_();_nop_();//定义空指令
#define addwr 0xa0
#define addrd 0xa1
sbit wp=P1^2;
sbit scl=P1^0;
sbit sda=P1^1;
uchar Number=0xaa;

mdelay(char j)
{
 unsigned int i;
 for(;j>0;j--)
 {
  for(i=0;i<20;i++);
 }
}

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

void stop(void)	   //停止
{
 sda=0;
 nop;
 scl=1;
 nop;
 sda=1;
 nop;
}

void ask(void)		//应答
{


scl=1;
nop;
sda=1;
mdelay(20);
scl=0;
nop;
}



void send(uchar date)  //发送写器件地址
{
		uchar i,temp;
		temp=date;
		for(i=0;i<8;i++)	
		{
			temp=temp<<1;
			scl=0;
			nop;
			sda=CY;
			nop;
			scl=1;
			nop;
		}
		scl=0;
		nop
		sda=1;
		nop
}

uchar read(void)		//读一个字节
{
	uchar m,k;
	scl=0;
	nop;
	sda=1;
	nop;
	for(m=0;m<8;m++)
	{
		scl=1;
		nop;
		k=(k<<1)|sda;
		scl=0;
		nop;
	}
	return 	k;

}

void write_rom(uchar data1,uchar add1) //写ROM
{ 
  star();
  nop;
  send(addwr);
  nop;
  ask();
  send(add1);
  nop;
  ask();
  nop;
  send(data1);
  nop;
  ask();
  nop;
  stop();
  nop;
  mdelay(20);
  nop;
 }


void read_rom(uchar add2) //读ROM
{uchar hehe;
 star();
 nop;
 send(addwr);
 nop;
 ask();
 nop;
 send(add2);
 nop;
 ask();nop;
 star();nop;
 send(addrd);nop;
 ask();nop;
 hehe=read();nop;
 scl=0;
 stop();
 Number=hehe;
}


void main()
{
 wp=0;
 write_rom(Number,4);
 mdelay(20);
 Number=0;
 read_rom(4);
P2=Number;
 while(1);

}

⌨️ 快捷键说明

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