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

📄 main_s.c

📁 8051模拟IIC总线读写24CXX原程序。
💻 C
字号:
#include"3552.h"
#include "i2cm.h"
#define  SLA_R	0x26;
#define  SLA_W  0x27;
extern unsigned char idata Slave_Adr;
extern unsigned char idata FReceive_Done;
extern unsigned char idata FTransmitted_Done;
unsigned char code DATA1[]={0x55,0xAA,0xA5,0x5A};
extern unsigned char idata SDATA[10];
void init_i2c();

//=====================================================

//====================================================
int main()
{
	
	 SP =0x30;
	 Init_uart();
     init_i2c();
//---------------------------------------------------
//Slave receive mode
//----------------------------------------------------
while(1)
{	
#if 1
     FReceive_Done = 0;
	 transs("---slave receive mode!!---\n\r");
  	 while(!FReceive_Done){}
	 transs("---slave receive end!!---\n\r");	 
     Compare_Data();
#endif
//---------------------------------------------------
//Slave transmit mode
//---------------------------------------------------
	  FTransmitted_Done =0;	
	  transs("---slave transmitted mode!!---\n\r");
	  while(!FTransmitted_Done){}
	  transs("---slave transmitted end!!---\n\r");
//---------------------------------------------------
}
   while(1); 		
   return 0;
}
//====================================================
void Init_uart()
{
     SCON = 0x50;
	 TI = 0x00;
	 TMOD = 0x20;
	 TL1  = 0x00;
	 TH1 = 0xF3;    //12M 2400
	 TR1 = 0x01;
}
//--------------------------------------
void init_i2c()
{	  
		EA=1;
		ES1=1;	
		S1CON=ENABLE_I2C;
	    S1ADR=SLA_R;	
	    
}
//=======================================
//---------------------------------------
//* transmit a char*/
void transc (char c)
{
	SBUF = c;
	while(!TI);
	TI = 0;
}
//---------------------------------------
//---------------------------------------
void transreg(char c)
{
	int tmp;
	int tmpc;
	tmp=c;
	tmp=(tmp>>4)&0x0F;
	ACC=tmp;
    tmpc=hextoascii(tmp); 
    transc(tmpc);
	tmp=c&0x0F;
	tmpc=hextoascii(tmp); 
    transc(tmpc);
	transs("\n\r");
     
}

//-----------------------------------------
int hextoascii(int hex2)
{
	int tmp1;
	tmp1=hex2;
	if (tmp1 >= 0x0A )
	  { 
        tmp1 += 0x37;
 	  }
    else
	  {
		tmp1+=0x30;
	  } 
     return tmp1;
}
//-------------------------------------------
/* transmit a string */

void transs(char *s)
{

   while (*s!='\0')
    {
      SBUF=*s;
	  while(!TI);
	  TI = 0 ;
      s++;
   }

}
//-------------------------------------------
void Compare_Data()
{
	unsigned int data i ;
	unsigned char idata compare_Flag = 0;
	for(i=0;i<4;i++)
	 {
	 	
	 	if(DATA1[i]==SDATA[i])
		{
			compare_Flag =0;
			//transreg(DATA1[i]);
			//transreg(SDATA[i]);
		}
		else
		{
			//transreg(DATA1[i]);
			//transreg(SDATA[i]);
			compare_Flag =1;
		}
		
	 }
	 if(!compare_Flag)
	 {
	 	transs("-----ok!-----\n\r");
		FReceive_Done = 0;
	 }
	 else
	 {
	    transs("-----fail!-----\n\r");
		FReceive_Done = 0;
	 }
}
//--------------------------------------------

⌨️ 快捷键说明

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