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

📄 eep.c

📁 STC89C58单片机的内部32k eeprom读写程序
💻 C
字号:
#include<math.h>
#include<stdio.h>
#include<reg52.h>
#include <intrins.h>
#define NOP5    _nop_();_nop_();_nop_();
#define uchar unsigned char
#define uint unsigned int

sfr AUXR = 0x8e;
sfr AUXR1 = 0xa2;
sfr P4 = 0xe8;
sfr XICON = 0xc0;
sfr IPH = 0xb7;
sfr WDT_CONTR = 0xe1;
sfr ISP_DATA = 0xe2;
sfr ISP_ADDRH = 0xe3;
sfr ISP_ADDRL = 0xe4;
sfr ISP_CMD = 0xe5;
sfr ISP_TRIG = 0xe6;
sfr ISP_CONTR = 0xe7;
ISP_IAP_BYTE_READ=1;
ISP_IAP_BYTE_PROGRAM=2;
ISP_IAP_SECTOR_ERASE=3;
 WAIT_TIME=1;
 int xdata mmdata,nndata,i,EEPROM_DATA[5];
 int xdata flash_addres_h,flash_addres_l,isp_command,isp_data;	  ///important
 long xdata isp_add,temp,temp1,ISP_EEP_ADDRES,ISP_OUT_DATA,ISP_IN_DATA;
    
	uchar EEPROM_READ(flash_addres)				  //读取数据
   	  {	 uchar read;
	     ISP_ADDRH=flash_addres>>8;
		 ISP_ADDRL=flash_addres;
		 EA=0;
		 
         ISP_CONTR=0x81 ;
         ISP_CMD=0x01 ;
	  	 ISP_TRIG=0x46;
         ISP_TRIG=0xb9 ;
	     NOP5;
		 read=ISP_DATA;
		  EA=1;
       	return(read); 
	  }
   	void EEPROM_WRITE(flash_addres,isp_data)				   //写入数据
	 { 
	   ISP_ADDRH=flash_addres>>8;
	   ISP_ADDRL=flash_addres;
		ISP_DATA=isp_data;
	   EA=0;
	   ISP_CONTR=0x81 ;
	   ISP_CMD=0x02 ;
	   ISP_TRIG=0x46;
       ISP_TRIG=0xb9;
	   EA=1;
	 } 
	 void EEPROM_FORMAT(flash_addres)	 //擦除
	   {ISP_ADDRH=flash_addres>>8;
		ISP_ADDRL=flash_addres;
	   	EA=0;
	   	ISP_CONTR=0x81 ;
	    ISP_CMD=0x03;
		ISP_TRIG=0x46;
        ISP_TRIG=0xb9;
		EA=1;
	   }
 void EEPROM_CONTROL()
   { 	 ISP_EEP_ADDRES=0x8020;
   
   	    EEPROM_DATA[0]=EEPROM_READ(ISP_EEP_ADDRES);
		ISP_EEP_ADDRES++;
	    EEPROM_DATA[1]=EEPROM_READ(ISP_EEP_ADDRES);
		 SBUF=EEPROM_DATA[0];
			  while(TI==0);
			   TI=0;
			 	i++;
		  SBUF=EEPROM_DATA[1];
			  while(TI==0);
			   TI=0;
			 	i++;
		ISP_OUT_DATA=EEPROM_DATA[0];
   	 if(ISP_OUT_DATA<=0xff)
	 { EEPROM_DATA[1]++;
	  if(EEPROM_DATA[1]==0xff)
	  {EEPROM_DATA[0]++;
	   EEPROM_DATA[1]=0;
	  }
	   	  ISP_EEP_ADDRES=0x8020;
	   				   //format data
   		  EEPROM_FORMAT(ISP_EEP_ADDRES);
		  EEPROM_WRITE(ISP_EEP_ADDRES,EEPROM_DATA[0]);
		  ISP_EEP_ADDRES++ ;
	  	  EEPROM_FORMAT(ISP_EEP_ADDRES);
		  EEPROM_WRITE(ISP_EEP_ADDRES,EEPROM_DATA[1]);
		 }
   
   }
main()
{ long xdata aa[9]={'-','0','7','8','9','6','c','b',0x0a};
  int i,j,k;
  int xdata record1[5]={0,0};
 // int ii,jj,kk,bbc,cbb;
 //  long xdata old_data,new_data; //important
  int xdata record[5]={0x0a,0x0b,0x0c,0x0d,0x0e};
  
   TMOD=0X20;
	TL1=0xff;TH1=0xff;
	SCON=0x50;PCON=0x80;
   	TR1=1; 
   temp=0;
   i=0x00;
    ISP_EEP_ADDRES=0x8020;
    EEPROM_FORMAT(ISP_EEP_ADDRES);
	NOP5;
    EEPROM_WRITE(ISP_EEP_ADDRES,0x0c);
	k=EEPROM_READ(ISP_EEP_ADDRES);
	  SBUF=k;
	while(TI==0);
			   TI=0;
			 	i++;
		  ISP_EEP_ADDRES++;
	EEPROM_FORMAT(ISP_EEP_ADDRES);
	NOP5;
	EEPROM_WRITE(ISP_EEP_ADDRES,0x0b);
	k=EEPROM_READ(ISP_EEP_ADDRES);
	  SBUF=k;
	while(TI==0);
			   TI=0;
			 	i++;



// while(i==0)
  { EEPROM_CONTROL();
   }
  


	TMOD=0X20;
	TL1=0xff;TH1=0xff;
	SCON=0x50;PCON=0x80;
   	TR1=1;
//	SBUF=0xf0;
//	while(TI==0);
//	TI=0;

while(1)  
	{
	
		P2=1;
		TMOD=0X20;
		 TL1=0xff;TH1=0xff;
		 SCON=0x50;PCON=0x80;
   	     TR1=1;
		 i=0;
		 j=0;
		// PCON=0X08;
		 while(RI==0);
		k=SBUF;
		RI=0;
		if (k==0x0a)
	{ while(i<9)
        { SBUF=aa[i];
			  while(TI==0);
			   TI=0;
			 	i++;
	   	}
	}
	 
}
}

⌨️ 快捷键说明

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