eeprom.c

来自「air-contronin controning air in or out,b」· C语言 代码 · 共 80 行

C
80
字号

#include "MATH.H"
#include "STC12.H"
#include "pin.h"
#include "function.h"
#include "evariable.h"

void EE_Write( unsigned int addr,unsigned char *da ,unsigned char len)
{
	unsigned char i;
	if((ISP_CONTR&0x10)!=0)
	{
		ISP_CONTR&=0xef;
	}
	for(i=0;i<len;i++)
	{
		 ISP_DATA=(*da++);
		 ISP_ADDRL=(unsigned char)addr;
		 ISP_ADDRH=(unsigned char)(addr>>8);
		 ISP_CMD=isp_write;
		 ISP_CONTR=0x8b;
		 ISP_TRIG=0x46;
		 ISP_TRIG=0xb9;
		 addr++;
		 if((ISP_CONTR&0x10)!=0)
		 {
			ISP_CONTR&=0xef;
			da--;
			addr--;
		 }
	}
		 ISP_DATA= 0;
		 ISP_ADDRL=0;
		 ISP_ADDRH=0;
		 ISP_CMD=  0;
		 ISP_CONTR=0x08;
		 ISP_TRIG= 0;
		 ISP_TRIG= 0;	
}

void  EE_Read( unsigned int addr,unsigned char *da ,unsigned char len)
{
	unsigned char i;
	for(i=0;i<len;i++)
	{
		 ISP_ADDRL=(unsigned char)addr;
		 ISP_ADDRH=(unsigned char)(addr>>8);
		 ISP_CMD=isp_read;
		 ISP_CONTR=0x8b;
		 ISP_TRIG=0x46;
		 ISP_TRIG=0xb9;
		 addr++;
		 (*da++)= ISP_DATA;
	}
		 ISP_DATA= 0;
		 ISP_ADDRL=0;
		 ISP_ADDRH=0;
		 ISP_CMD=  0;
		 ISP_CONTR=0x08;
		 ISP_TRIG= 0;
		 ISP_TRIG= 0;	
}

void  EE_Erase( unsigned int addr)
{
	ISP_ADDRL=(unsigned char)addr;
	ISP_ADDRH=(unsigned char)(addr>>8);
	ISP_CMD=isp_eraser;
	ISP_CONTR=0x83;//cpu below 8MHz
	ISP_TRIG=0x46;
	ISP_TRIG=0xb9;
	ISP_DATA= 0;
	ISP_ADDRL=0;
	ISP_ADDRH=0;
	ISP_CMD=  0;
	ISP_CONTR=0x08;
	ISP_TRIG= 0;	
}

⌨️ 快捷键说明

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