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

📄 2006410211915.txt

📁 24C512串行程序的使用说明,看看吧,也许对你会有用的
💻 TXT
字号:
#include <REG52.H>
#include <stdio.h>

sbit escl=P0^3;						
sbit esda=P0^2;
void w24c512(uchar pageadr,uchar wdataadr,uchar wdata);//一个字节写入24C512子程序,入口:uchar pageadr,uchar wdataadr,uchar wdata
uchar r24c512(uchar pageadr,uchar wdataadr);//从24C512中读取一个字节,入口uchar pageadr,uchar wdataadr,有返回值
void delay_10us(void);

 //==================//写24C512子程序单字节//==================
//============//入口:uchar pageadr,uchar wdataadr,uchar wdata========
void w24c512(usigned char device,unsigned int wdataadr,uchar wdata)
{
uchar i,msb,lsb;
uchar deviceadr; 
escl=0;
delay_10us();
esda=1;
delay_10us();
escl=1;
delay_10us();
esda=0;
delay_10us();
escl=0;
//开始时序

if (device==0)
{
deviceadr=0xa0;
}
else
{
deviceadr=0xa2;
}
order=deviceadr;
for(i=0;i<8;i++)
	{
	esda=order7;
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
	delay_10us();
	order=order<<1;
	}
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;	
//page adr sequ
	msb=wdataadr/256;
	lsb=wdataadr % 256;	
	order=msb;
    for(i=0;i<8;i++)
	{
	esda=order7;
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
	delay_10us();
	order=order<<1;
	}
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
//msb高字节

	order=lsb;
    for(i=0;i<8;i++)
	{
	esda=order7;
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
	delay_10us();
	order=order<<1;
	}
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
//lsb低字节

	order=wdata;
    for(i=0;i<8;i++)
	{
	esda=order7;
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
	delay_10us();
	order=order<<1;
	}
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;	
//want to write a byte

esda=0;
delay_10us();
escl=1;
delay_10us();
esda=1;
delay_10us();
escl=0;
delay_10us();
delay_10us();
delay_10us();
}
//stop




//==================//读24C512子程序单字节//==================
//==================//入口:uchar pageadr,uchar wdataadr,有返回值======
uchar r24c16(usigned char device,unsigned int wdataadr,uchar wdata){
uchar i,msb,lsb,deviceadr;


escl=0;
delay_10us();
esda=1;
delay_10us();
escl=1;
delay_10us();
esda=0;
delay_10us();
escl=0;
//start sequ

if (device==0)
{
deviceadr=0xa0;
}
else
{
deviceadr=0xa2;
}
order=deviceadr;
for(i=0;i<8;i++)
	{
	esda=order7;
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
	delay_10us();
	order=order<<1;
	}
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;	
//page adr sequ
	
	msb=wdataadr/256;
	lsb=wdataadr % 256;	
	order=msb;

    for(i=0;i<8;i++)
	{
	esda=order7;
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
	delay_10us();
	order=order<<1;
	}
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;	
//unit adr sequ


	order=lsb;
    for(i=0;i<8;i++)
	{
	esda=order7;
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
	delay_10us();
	order=order<<1;
	}
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;	
//unit adr sequ




	

	escl=0;
	delay_10us();
	esda=1;
	delay_10us();
	escl=1;
	delay_10us();
	esda=0;
	delay_10us();
	escl=0;
//restart

if (device==0)
{
deviceadr=0xa1;
}
else
{
deviceadr=0xa3;
}
	order=deviceadr;
	for(i=0;i<8;i++)
	{
	esda=order7;
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;
	delay_10us();
	order=order<<1;
	}
	delay_10us();
	escl=1;
	delay_10us();
	escl=0;	
//page adr sequ

	order=0x00;
	esda=1;

	for(i=0;i<8;i++)
	{
	order=order<<1;	
	escl=1;
	delay_10us();
	order0=esda;
	delay_10us();
	escl=0;
	delay_10us();
 	}
	//read data
 	esda=1;
	escl=1;
	delay_10us();
	escl=0;
	//ack

esda=0;
delay_10us();
escl=1;
delay_10us();
esda=1;
delay_10us();
escl=0;
delay_10us();
delay_10us();
delay_10us();
wdataadr=order;
return(wdataadr);
}
//stop

void delay_10us(void)
{
	unsigned int  i;
	for(i=0;i<600;i++)
	{
	 
	}
}

⌨️ 快捷键说明

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