eeprom.c

来自「按键控制电机的开启」· C语言 代码 · 共 66 行

C
66
字号
#include<reg51.h>
#define uchar unsigned char
#define	uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sfr ISP_DATA=0xe2;
sfr ISP_ADDRH=0xe3;
sfr ISP_ADDRL=0xe4;
sfr ISP_CMD=0xe5;
sfr ISP_TRIG=0xe6;
sfr ISP_CONTR=0xe7;
delay5(){;;}
void ISP_set()							 	//开ISP功能 
{
	EA=0;
	ISP_CONTR=ISP_CONTR&0x18; 
	ISP_CONTR=0xc1;
}
void ISP_close()							//关ISP功能 
{
	ISP_CONTR=0x7f;
	ISP_TRIG=0;
	EA=1;
}

void ISP_write(uint add,uchar date)			//写字节 
{	
	ISP_DATA=date;
	ISP_ADDRH=(add>>8);						//写入数据	
	ISP_ADDRL=(add&0x00ff);	
	ISP_set();	
	ISP_TRIG=0x46;
	ISP_TRIG=0xb9;
	ISP_CMD=ISP_CMD&0xf8;
	ISP_CMD=ISP_CMD|0x02;					//11111010 写字节 
	delay5();										
	ISP_close();
}
uchar ISP_read(uint add)					//读字节 
{	
	ISP_ADDRH=(add>>8);
	ISP_ADDRL=(add&0x00ff);	
	ISP_set();	
	ISP_TRIG=0x46;
	ISP_TRIG=0xb9;	
	ISP_CMD=ISP_CMD&0xf8;
	ISP_CMD=ISP_CMD|0x01;						//11111001 读字节
	delay5();					
	ISP_close();
	return ISP_DATA;
}
void ISP_clean(uint add)					//擦除扇区 
{	
	uint flash_ADDR=0;
	flash_ADDR=(add&0xfe00);				//1111111000000000;取扇区地址
	ISP_ADDRH=(flash_ADDR>>8);
	ISP_ADDRL=0x00;	
	ISP_set();
	ISP_TRIG=0x46;
	ISP_TRIG=0xb9;		
	ISP_CMD=ISP_CMD&0xf8;
	ISP_CMD=ISP_CMD|0x03;					//11111011	擦除
	delay5();
	ISP_close();
}

⌨️ 快捷键说明

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