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

📄 main.c

📁 SM59D04G2_EEPROM读写 其他人不需帐号就可自由下载此源码
💻 C
字号:
#include<SM59D04G2.h>
void ISP_enable (void);
void ISP_disable (void);
void ISP_Byte_Program (unsigned int DPTR1,unsigned char ONE_DATA1);
void ISP_Sector_erase1(unsigned char block);	 //block=1 to 8
//void ISP_512Byte_read_write(unsigned char block);
void ISP_readByte(unsigned char block,unsigned int startplace,unsigned int len);
void ISP_writeByte(unsigned char block,unsigned int startplace,unsigned int len,unsigned char *wrturndata);

//void uart_init(void);
//void uart_send(unsigned char val);
//unsigned char code read_buffer[1] _at_ 0x3c00;
unsigned char code g[1] _at_ 0x3000;
unsigned char code g1[8] ={0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e};
unsigned char idata returndata2[21]={1,4,6,7,5,6,7,8,0x0b,0x0a,1,5,0x0c,4,5,6,7,0x0d,9,0x0a};
unsigned char xdata returndata1[512];
unsigned char xdata returndata3[21];
//unsigned char xdata b;
void main()	  
{ 

//uart_init();		
ISP_writeByte(1,0,20,returndata2);	
ISP_readByte(1,0,20);

//b=0x08;
//uart_send(b);

	while(1)
	{
	//P2_7 =0; //test
	//while(1);
	};
}		 

//void uart_init(void) //串口初始化					   	// 正常
//{	
	//RCAP2H=0xff;			//波特率=9600;
	//RCAP2L=0xdc;
	//TL2=0xff;
	//TH2=0xdc;	
	//SCON=0X50;
	//T2CON=0X34;		
//}

//void uart_send(unsigned char val)  //功能描述:向串口发送一个字符		 	// 正常
//{
	//SBUF=val;
	//while(TI==0);    	
	//TI=0;
//}
//***********************//
//功能:打开ISP操作使能
//入口:无
//出口:无
//调用函数:无
//***********************//
void ISP_enable (void)			  	// 正常
{
	EA =0;
 	ISP_DATA =0x55;
	ISP_DATA =0xaa;
	ISP_DATA =0x55;
	SCONF =SCONF|0x04|0x02;
}
//***********************//
//功能:关闭ISP操作使能
//入口:无
//出口:无
//调用函数:无
//***********************//
void ISP_disable (void)					// 正常
{
	SCONF =SCONF&0x0FB|0x02;
	EA =1;
}
//***********************//
//功能:写入任意一字节到EEPROM的数据
//入口:16位地址DPTR1,一字节数据ONE_DATA1
//出口:无
//调用函数:ISP_enable();ISP_disable();
//***********************//
void ISP_Byte_Program (unsigned int DPTR1,unsigned char ONE_DATA1)		 	// 正常
{
	ISP_enable();
	ISP_DATA =ONE_DATA1;
    ISP_ADDRH =(unsigned char)(DPTR1>>8);
    ISP_ADDRL =(unsigned char)DPTR1;
	ISP_CMD =ISP_IAP_BYTE_PROGRAM;
	ISP_disable(); 
}
//***********************//
//功能:擦除任意EEPROM块的数据
//入口:块block
//出口:无
//调用函数:ISP_enable();ISP_disable();
//***********************//
void ISP_Sector_erase1(unsigned char block)	 //block=0 to 7		 	// 正常
{
unsigned char reblockh;
reblockh=g1[block];
ISP_enable();
ISP_ADDRH=reblockh;
//ISP_ADDRH=0x3c;
ISP_ADDRL=0x00;
ISP_CMD=ISP_IAP_SECTOR_ERASE;
ISP_CMD=ISP_IAP_SECTOR_ERASE;
ISP_disable();
}
//***********************//
//功能:任意写入EEPROM的数据
//入口:块block,初始位置startplace,数据长度len,写入数据wrturndata
//出口:无
//调用函数:ISP_512Byte_read_write(unsigned char block);ISP_Byte_Program (unsigned int DPTR1,unsigned char ONE_DATA1);
//***********************//
void ISP_writeByte(unsigned char block,unsigned int startplace,unsigned int len,unsigned char *wrturndata)		// 正常
{
unsigned int i=0;
//long startplace1;
   //startplace1=512*block+startplace;
   //ISP_512Byte_read_write(block);
   SCONF =0x02;		 //打开外部RAM
   for(i=0;i<512;i++)		 // 读出任意EEPROM块的全部数据
   {
   returndata1[i]=*(g+512*block+i); 			//数据存在数组returndata1中
   //uart_send(returndata1[i]);
   }
   for(i=0;i<len;i++)		  //更新数据
   {
	  returndata1[i+startplace]=*wrturndata;
	  //uart_send(returndata1[i+startplace]);	//
	wrturndata++;
   }
   ISP_Sector_erase1(block);	 //	擦除任意EEPROM block块的数据
   for(i=0;i<512;i++)		   //写入更新完的数据
   {
  ISP_Byte_Program(g+512*block+i,*(returndata1+i)); 
  //uart_send(returndata1[i]);	  //
   }
}
//***********************//
//功能:任意读出EEPROM的数据
//入口:块block,初始位置startplace,数据长度len
//出口:数据保存在数组returndata1中
//调用函数:无
//***********************//
void ISP_readByte(unsigned char block,unsigned int startplace,unsigned int len)		// 正常
{
	unsigned int i=0;
   //startplace=512*block+startplace;
   SCONF =0x02;	   //打开外部RAM
      for(i=0;i<len;i++)
   {
   returndata3[i]=*(g+512*block+i+startplace); 			//数据存在数组returndata2中
   //uart_send(returndata3[i]);

   }
}																							   

⌨️ 快捷键说明

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