单片机读写内部的EEPROM怎么操作,串口通信我已经做好了?

我要从PC上把数据发给单片机,单片机接收到后存储到EEPROM,单片机读取EEPROM的数据发送到PC上,我看了手册、网上查过资料,做了好久,没 有实现,单片机是STC15F2K16S2,求指导

你没有实现,是卡在什么地方了?PC 与单片机的串口通讯、还是 EEPROM 的读写呢?

我是卡在了EEPROM的读写了,看了手册、百度过了,还是不能实现EEPROM的读写,我用的单片机是15F2S16S2,用的是内部EEPROM

如果单片机内部带EEPROM,那么这款单片机的数据手册就应该有EEPROM操作详细说明的,甚至有范例,不一定型号要一模一样,只有是相同系列 应该是通用的。

#define RdCommand 0x01 //读
#define PrgCommand 0x02 //写

#define EraseCommand 0x03 //扇区擦除数据命令
#define ENABLE_IAP 0X83// <12mhz
#define WaitTime 0x01 //定义CPU的等待时间,40M以下为0,20M以下为1,10M以下为2,5M以下为3

/*****ISP/IAP特殊功能寄存器声明********/

sfr ISP_DATA = 0xC2; // ISP/IAP操作时的数据寄存器。
sfr ISP_ADDRH = 0xC3; //Flash高字节地址寄存器
sfr ISP_ADDRL = 0xC4; //Flash低字节地址寄存器
sfr ISP_CMD = 0xC5; //Flash命令模式寄存器
sfr ISP_TRIG = 0xC6; //Flash命令触发寄存器
sfr ISP_CONTR = 0xC7; //ISP/IAP 控制寄存器

void ISP_IAP_Disable(void) //关闭ISP/IAP功能
{
ISP_CONTR=0;
ISP_CMD=0;
ISP_TRIG=0;
ISP_ADDRH=0;
ISP_ADDRL=0;
}
unsigned char Read_byte(unsigned int addr)
{
unsigned char dat;
ISP_CONTR=ENABLE_IAP; //使能isp
ISP_CMD=RdCommand; //读命令
ISP_ADDRL=addr;
ISP_ADDRH=addr>>8;
ISP_TRIG=0X5a; //触发命令
ISP_TRIG=0Xa5; //触发命令
nop();
dat=ISP_DATA; //读
ISP_IAP_Disable(); //关闭
return dat;

}
void Write_byte(unsigned int addr,unsigned char dat)
{

 ISP_CONTR=ENABLE_IAP;   //使能isp
 ISP_CMD=PrgCommand;   //写
 ISP_ADDRL=addr;
 ISP_ADDRH=addr>>8;
 ISP_DATA=dat;
 ISP_TRIG=0X5a;    //触发命令
 ISP_TRIG=0Xa5;     //触发命令
 _nop_();
 ISP_IAP_Disable();   //关闭

}
void SectorErase(unsigned int addr)
{
ISP_CONTR=ENABLE_IAP; //使能isp
ISP_CMD=EraseCommand; //写
ISP_ADDRL=addr;
ISP_ADDRH=addr>>8;
ISP_TRIG=0X5a; //触发命令
ISP_TRIG=0Xa5; //触发命令
nop();
ISP_IAP_Disable(); //关闭
}

这是我stc15w系列的单片机eeprom读写例程 不知道15f能不能用