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

📄 eeprom.c

📁 自己看吧 eerom的
💻 C
字号:
#include <Reg932.h> 		
#include <stdio.h>


unsigned long int  EEPROMreadLong(unsigned char adr);
void EEPROMwriteLong(unsigned char adr, unsigned long int dat);


void EEPROMwrite(unsigned char adr, unsigned char dat)
{
	EA=0;										// disable Interrupts during write
	DEECON=(unsigned char)((adr>>8)&0x01);		// mode: write byte, set address
	DEEDAT=dat;									// set write data
	DEEADR=(unsigned char) adr;					// start write
	EA=1;					
	while((DEECON&0x80)==0);					// wait until write is complete
}

unsigned char EEPROMread(unsigned char adr)
{
	DEECON=(unsigned char)((adr>>8)&0x01);		// mode: read byte, set adress
	DEEADR=(unsigned char) adr;					// start read
	while((DEECON&0x80)==0);					// wait until read is complete
	return DEEDAT;								// return data
}

void EEPROMwritestr(unsigned char EEPROMadr, unsigned char *dat,unsigned char len)
{
unsigned char i;
unsigned char CRC=0;

		for(i=0;i<len;i++)
		{
		     EEPROMwrite(EEPROMadr + i, dat[i] );
             CRC = CRC + dat[i];
		}
		     EEPROMwrite(EEPROMadr + len, CRC );

}

unsigned char EEPROMreadstr(unsigned char EEPROMadr, unsigned char *dat,unsigned char len)
{
unsigned char i;
unsigned char CRC=0;

		for(i=0;i<len;i++)
		{
		    dat[i] = EEPROMread( EEPROMadr + i );
             CRC = CRC + dat[i];
		}
		    i = EEPROMread( EEPROMadr + len );
			if (CRC == i)
			   return 1;

			   return 0;
}



void EEPROMwriteLong(unsigned char adr, unsigned long int dat)
{
	EA=0;										// disable Interrupts during write
	DEECON=0x00;		                        // mode: write byte, set address
	DEEDAT= (unsigned char)(dat & 0x000000FF);		// set write data
	DEEADR= adr;					            // start write
	EA=1;					
	while((DEECON&0x80)==0);					// wait until write is complete

	EA=0;										// disable Interrupts during write
	DEECON=0x00;		                        // mode: write byte, set address
	DEEDAT= (unsigned char)((dat>>8) & 0x000000FF);		// set write data
	DEEADR= adr+1;					            // start write
	EA=1;					
	while((DEECON&0x80)==0);					// wait until write is complete

	EA=0;										// disable Interrupts during write
	DEECON=0x00;		                        // mode: write byte, set address
	DEEDAT= (unsigned char)((dat>>16) & 0x000000FF);		// set write data
	DEEADR= adr+2;					            // start write
	EA=1;					
	while((DEECON&0x80)==0);					// wait until write is complete

	EA=0;										// disable Interrupts during write
	DEECON=0x00;		                        // mode: write byte, set address
	DEEDAT= (unsigned char)((dat>>24) & 0x000000FF);		// set write data
	DEEADR= adr+3;					            // start write
	EA=1;					
	while((DEECON&0x80)==0);					// wait until write is complete


}

unsigned long int  EEPROMreadLong(unsigned char adr)
{
unsigned long int val;

	DEECON=0x00;		                        // mode: read byte, set adress
	DEEADR=(unsigned char) adr;					// start read
	while((DEECON&0x80)==0);					// wait until read is complete
    val = (unsigned long)DEEDAT;

	DEECON=0x00;		                        // mode: read byte, set adress
	DEEADR=(unsigned char) adr+1;					// start read
	while((DEECON&0x80)==0);					// wait until read is complete
    val = val + ((unsigned long)DEEDAT << 8);

	DEECON=0x00;		                        // mode: read byte, set adress
	DEEADR=(unsigned char) adr+2;					// start read
	while((DEECON&0x80)==0);					// wait until read is complete
    val = val + ((unsigned long)DEEDAT << 16);

	DEECON=0x00;		                        // mode: read byte, set adress
	DEEADR=(unsigned char) adr+3;					// start read
	while((DEECON&0x80)==0);					// wait until read is complete
    val = val + ((unsigned long)DEEDAT << 24);

	return val;								// return data
}


⌨️ 快捷键说明

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