#include<STC_NEW_8051.H>
#include<EEPROM.H>
void eeprom_eares(unsigned int addres)//扇区擦除。
{
unsigned i;
ISP_ADDRL=addres; //低位地址
ISP_ADDRH=addres>>8; //高位地址
ISP_CONTR=0x01;
ISP_CONTR=ISP_CONTR|0x80; //设时间与充ISP操作。
ISP_CMD=0x03; //扇区命命令
ISP_TRIG=0x46; //触发
ISP_TRIG=0xB9; //触发启动。
for(i=0;i<3;i++);
ISP_ADDRL=0xff;
ISP_ADDRH=0xff;
ISP_CONTR=0x00;
ISP_CMD=0x00;
ISP_TRIG=0x00;
}
void eeprom_write(unsigned int addres,unsigned char write_data)//写数据。
{
unsigned char i;
ISP_DATA=write_data; //要写入的数据。
ISP_ADDRL=addres; //低位地址
ISP_ADDRH=addres>>8; //高位地址
ISP_CONTR=0x01;
ISP_CONTR=ISP_CONTR|0x80; //设时间与充ISP操作。
ISP_CMD=0x02; //写命令
ISP_TRIG=0x46; //触发
ISP_TRIG=0xB9; //触发启动。
for(i=0;i<3;i++);
ISP_ADDRL=0xff;
ISP_ADDRH=0xff;
ISP_CONTR=0x00;
ISP_CMD=0x00;
ISP_TRIG=0x00;
}
unsigned char eeprom_read(unsigned int addres)
{
unsigned char i,z;
ISP_ADDRL=addres; //低位地址
ISP_ADDRH=addres>>8; //高位地址
ISP_CONTR=0x01;
ISP_CONTR=ISP_CONTR|0x80; //设时间与充ISP操作。
ISP_CMD=0x01; //写命令
ISP_TRIG=0x46; //触发
ISP_TRIG=0xB9; //触发启动。
for(i=0;i<3;i++);
ISP_ADDRL=0xff;
ISP_ADDRH=0xff;
ISP_CONTR=0x00;
ISP_CMD=0x00;
ISP_TRIG=0x00;
z=ISP_DATA;
return(z);
}
这是eeprom.c, 我主程序调用的,大家看看有问题吗?
|