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

📄 main_m.c

📁 8051模拟IIC总线读写24CXX原程序。
💻 C
字号:
#include <intrins.h>
#include"3552.h"
#include "i2cm.h"

extern ERS_BLOCK1();
extern _program_data();
extern READ_DATA();

extern unsigned char idata Slave_Adr;
extern unsigned char idata FReceive_Done;
extern unsigned char idata FTransmitted_Done;

extern unsigned short CustomCode;
extern unsigned char DataCode;
extern unsigned char Ir0Index;
extern unsigned char Ir1Index;
extern unsigned char IrIndex;

extern bit read;
extern unsigned char idata SDATA[10];
extern unsigned char DATA[6];
extern unsigned char doubleE[7];

extern unsigned char wait2sFlag;
extern unsigned char wait20ms;

bit PowerOnFlag = 1;

void delay(unsigned int delay_time);
void Wait_ms(char cTime);

int main()
{
	char *addrHigh;
	char *addrLow;
	char *romData;

	Initial();

	//I2C mode Master transmit
	#if 0
	 read = 0;
	 delay(10000);
	 FTransmitted_Done = 0;
	 transs("---Master transmit mode!!---\n\r");
	 delay(1000);
	 S1CON = SEND_START_ACK;
        Slave_Adr = SLA_W;     
	 while(!FTransmitted_Done){};
	 transs("---Master transmit end !!---\n\r");
	 delay(1000);
	 #endif

	//I2C mode Master receive
	#if 0
	 read = 1;
        FReceive_Done = 0;
	 transs("---Master receive mode!!---\n\r");	
	 delay(10000);
	 Slave_Adr = SLA_W;	 
        S1CON = SEND_START_ACK;
	 while(!FReceive_Done){};
        transs("---Master receive end !!---\n\r");
	 delay(10000);
	 #endif

	 //erase flash and program an address and read 
	 //iap test
	#if 1
	{
		DataCode = 0xff;
		CustomCode = 0xffff;
		ERS_BLOCK1();
		Wait_ms(3);
		
		addrHigh = (char *)0x20;
		addrLow = (char *)0x21;
		romData = (char *)0x22;
		*addrHigh = 0x55;
		*addrLow = 0x66;
		*romData = 0x55;
		_program_data();
		Wait_ms(3);

		READ_DATA();
		Wait_ms(3);
		*romData = *(char *)0x22;
		transreg(*romData);
	}
	#endif

	while(1)
	{	

 	} 
}


void Initial()
{
//	SP =0x30;
	INT1 = 1;
	IE = 0xA6;
	IP = 0x20;		
	IT1 = 1;
	SCON = 0x50;
	TMOD = 0x22;
	TL0 = 0x38;
	TH0 = 0x38;
	TR0 = 1;
	TL1  = 0x00;
	TH1 = 0xF3;		//0xFD 11M 9600 		//0xF3;    //12M 2400
	TR1 = 1;

	PowerSwitch= 0;
	relay_on = 1;
}

//* 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 delay(unsigned int delay_time)
{
		while(delay_time)
		{
			delay_time--;
		}
}

void Wait_ms(char cTime)
{
	unsigned char i,j;
 	for(i=0;i<cTime;i++)
	{
		for(j=0;j<250;j++)_nop_();
		for(j=0;j<250;j++)_nop_();
		for(j=0;j<250;j++)_nop_();
		for(j=0;j<250;j++)_nop_();
	}
}

⌨️ 快捷键说明

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