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

📄 at24c02.c

📁 使用单片机keilc51编程,每次上电时,从24C02中读取数据,让二极管灯点亮.
💻 C
字号:
#include <REGX51.H>
#define uchar unsigned char 
sbit SDA=P2^7;
sbit SCL=P3^6;	
void delay1(uchar x);
void delay()
{;;}
void start()
{
  SDA=1;
  delay();
  SCL=1;
  delay();
  SDA=0;
  delay();
}
void stop()
{
  SDA=0;
  delay();
  SCL=1;
  delay();
  SDA=1;
  delay();
  SCL=0;
  delay();
}
void respons()
{
   uchar i;
   SCL=1;
   delay();
   while((SDA==1)&&(i<250))i++;
   SCL=0;
   delay();
}
void write_byte(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 read_byte()
{
 	uchar i,k;
	SCL=0;
	delay();
	SDA=1;
	delay();
	for(i=0;i<8;i++)
	{
	  SCL=1;
	  delay();
	  k=(k<<1)|SDA;
	  SCL=0;
	  delay();
	 }
 	return(k);
}
 void write_add(uchar address,uchar date)
{
  start();
  write_byte(0xa0);
  respons();
  write_byte(address);
  respons();
  write_byte(date);
  respons();
  stop();
} 
 uchar read_add(uchar address)
{
  uchar date;
  start();
  write_byte(0xa0);
  respons();
  write_byte(address);
  respons();
  start();
  write_byte(0xa1);
  respons();
  date=read_byte();
  stop();
  return date;
}
 void init()
{
  SDA=1;
  delay();    
  SCL=1;
  delay();
} 
void main()
{
 init();
 write_add(0x02,0xaa);
 delay1(100);
 P0=read_add(0x02);
 P3_7=0;
 while(1);
}
void delay1(uchar x)
{
 uchar i,j;
 for(i=x;i>0;i--)
  for(j=200;j>0;j--);
}








⌨️ 快捷键说明

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