代码拉取完成,页面将自动刷新
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;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。