加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
EEPROM.h.orig 2.18 KB
一键复制 编辑 原始数据 按行查看 历史
nay118 提交于 2022-12-12 20:14 . 初始化工程
typedef unsigned char UINT8;
typedef unsigned int UINT16;
typedef unsigned long UINT32;
typedef char INT8;
typedef int INT16;
typedef long INT32;
static UINT8 i=0;
/*
定义寄存器 ISP
*/
/*
sfr ISP_DATA= 0xe2; // Flash数据寄存器
sfr ISP_ADDRH= 0xe3;// Flash高字节地址寄存器
sfr ISP_ADDRL= 0xe4;// Flash低字节地址寄存器
sfr ISP_CMD= 0xe5;// Flash命令模式寄存器
sfr ISP_TRIG= 0xe6;// Flash命令触发寄存器
sfr ISP_CONTR= 0xe7;// ISP/IAP 控制寄存器
*/
#define NOP() _nop_()
#define EEPROM_START_ADDRESS 0X2000
#define LED_PORT P2
//微秒级延时
void DelayNus(UINT16 t)
{
UINT16 d=0;
d=t;
do
{
NOP();
}while(--d > 0);
}
//毫秒级延时
void DelayNms(UINT16 t)
{
do
{
DelayNus(1000);
}while(--t > 0);
}
//EEPROM使能
void EEPROMEnable(void)
{
ISP_CONTR=0x81;//使能并设置好等待时间
}
//EEPROM禁用
void EEPROMDisable(void)
{
ISP_CONTR=0x00;//禁止EEPROM
ISP_CMD = 0X00;//无ISP操作
ISP_TRIG = 0X00;//清零
ISP_ADDRH = 0X00;//清零
ISP_ADDRL = 0X00;//清零
}
//eeprom 设置读写地址(相对地址)
void EEPROMSetAddress(UINT16 addr)
{
addr+=EEPROM_START_ADDRESS;//初始化地址
ISP_ADDRH=(UINT8)(addr>>8);//设置读写地址高字节
ISP_ADDRL=(UINT8) addr; //设置读写地址低字节
}
//EEPROM启动
void EEPROMStart(void)
{
ISP_TRIG=0x46;
ISP_TRIG=0xB9;
}
//EEPROM读取单个字节
UINT8 EEPROMReadByte(UINT16 addr)
{
ISP_DATA=0X00;
ISP_CMD=0X01;
EEPROMEnable();
EEPROMSetAddress(addr);
EEPROMStart();
DelayNus(10);//读取一个字节需要10us
EEPROMDisable();
return (ISP_DATA);
}
//EEPROM写入单个字节
UINT8 EEPROMWriteByte(UINT16 addr,UINT8 byte)
{
EEPROMEnable();
ISP_CMD=0X02;
EEPROMSetAddress(addr);
ISP_DATA=byte;
EEPROMStart();
DelayNus(60);
EEPROMDisable();
return 1;
}
//EEPROM扇区擦除
UINT8 EEPROMSectorErase(UINT16 addr)
{
ISP_CMD=0X03;
EEPROMEnable();
EEPROMSetAddress(addr);
EEPROMStart();
DelayNus(10);//
EEPROMDisable();
return 1;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化