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

📄 写入一个字节到24c02 并读出来.c

📁 这是本人在学习51单片机时练习的C程序 lgl_5923@163.com
💻 C
字号:
/* 第16 课。写入一个字节到24c02 并读出来验证 

     本课的程序已经包含了上一颗的内容,增加了读24c02 的函数,请看程序: 
――――――――――――――――――――――――――――― */

#include <reg51.h>//包括一个51 标准内核的头文件 
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long

#define W 0xa0//定义器件在IIC 总线中的地址 
#define R 0xa1

sbit SCL=P2^7;
sbit SDA=P2^6;
sbit P10=P1^0;

//定时函数
void Delay(unsigned int number)
  {
     uchar temp;
	  for(;number!=0;number--)
	  {
	     for(temp=112;temp!=0;temp--);
	  }
	}


//开始总线函数
void Start()
 {
      SDA=1;
		SCL=1;
		SDA=0;
		SCL=0;
 }

//结束总线函数

 void Stop()
 {
 SCL=0;
 SDA=0;
 SCL=1;
 SDA=1;
 }

 //发ACKO
 void NoACK()
  {
  SDA=1;
  SCL=1;
  SCL=0;
  }
//测试ACK
  bit TeastACK()
  {
  bit ErrorBit;
  SDA=1;
  SCL=1;
  ErrorBit=SDA;
  SCL=0;
  return(ErrorBit);
  }

//写入8 个bit 到24c02 
  Write8bit(uchar input)
   {
	uchar temp;
	for(temp=8;temp!=0;temp--)
	 {
	   SDA=(bit)(input&0x80);
		SCL=1;
		SCL=0;
		input=input<<1;
	 }
   }

//写入一个字节到24c02 中
	void Write24c02(uchar ch,uchar address)
	  {
	    Start();
		 Write8bit(W);
		 TestACK();
       Write8bit(address);
		 TestACK();
		 Write8bit(ch);
		 TestACk();

		 Stop();
		 Delay(10);

		}

//从24c02 中读出8 个bit 
		uchar Read8bit()
		{
		uchar temp2,rbyte=0;
		for(temp2=8;temp2!=0;temp2--)
		 {
		   SCL=1;
			rbyte=rbyte<<1;
			rbyte=rbyte|((uchar)(SDA));
			SCL=0;
		 }
		 return(rbyte);
	}
//从24c02 中读出1 个字节 
	uchar Read24c02(uchar address)
	  {
	  uchar ch;
	  Start();
	  Write8bit(W);
	  TestACK();
	  Write8bit(address);
	  TestACK();
	  Start();
	  Write8bit(R);
	  TestACK();
	  ch=Read8bit();
	  NoACK();
	  Stop();
	  return(ch);
	  }

//本课试验写入一个字节到24c02 并读出来验证 
	  void main(void) //  主程序
	  {
	  uchar c1,c2;
	  c1=Read24c02(0x02);
	  Write24c02(0x03);
	  c2=Read24c02(0x03);
	  P10=0;
	  while(1);
	  }

/*―――――――――――――――― 
      在主程序中,我们将上一课写入的0x02 位置的数据读出来放在c1 中,新写了一个数 
据0x99 在0x03 位置中,并立即将它读出来放在c2 中。 
      编译,运行,等P10 灯亮后。我们看结果。 
      这次的看结果,我们要在仿真环境中直接看变量。点程序停止,观察c1 和c2 的值, 
可以看到,分别为:0x88 和0x99。数据正确! 
*/

⌨️ 快捷键说明

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