📄 eeprom.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -