STC单片机内部EEPROM程序
时间:12-02
来源:互联网
点击:
#include
#include
#define uchar unsigned char
#define uint unsigned int
sfr ISP_DATA = 0x00E2; //EEPORM数据寄存器
sfr ISP_ADDRH = 0x00E3; //地址寄存器高八位
sfr ISP_ADDRL = 0x00E4; // 地址寄存器低八位
sfr ISP_CMD = 0x00E5; //EEPORM命令寄存器
sfr ISP_TRIG = 0x00E6; //EEPROM(ISP/IAP) 命令触发寄存器
sfr ISP_CONTR = 0x00E7; //(ISP/IAP)控制寄存器
/********打开ISP,IAP功能********/
void ISP_IAP_enable(void)
{
// EA=0;
ISP_CONTR |= 0X18;
ISP_CONTR |= 0X00;
ISP_CONTR |= 0X80;
}
/********关闭ISP,IAP功能********/
void ISP_IAP_disable(void)
{
ISP_CONTR &= 0X7f;
ISP_TRIG = 0X00;
// EA=1;
}
/********公用的触发代码*********/
void ISPgoon(void)
{
ISP_IAP_enable();
ISP_TRIG = 0X46;
ISP_TRIG = 0Xb9;
_nop_();_nop_();
}
/*******读字节*****************/
uchar byte_read(uint byte_adder)
{
ISP_ADDRH = (uchar)(byte_adder>>8);
ISP_ADDRL = (uchar)(byte_adder & 0x00ff);
ISP_CMD = ISP_CMD & 0xf8;
ISP_CMD = ISP_CMD | 0X01;
ISPgoon();
ISP_IAP_disable();
return(ISP_DATA);
}
/********擦除扇区*************/
void SectorErase(uint sector_adder)
{
static uint iSector;
iSector = sector_adder & 0xfe00;
ISP_ADDRH = (uchar)(iSector>>8);
ISP_ADDRL = 0X00;
ISP_CMD &= 0XF8;
ISP_CMD |= 0X03;
ISPgoon();
ISP_IAP_disable();
}
/***********写字节***********/
void byte_write(uint byte_adder,uchar orginal_data)
{
ISP_ADDRH = (uchar)(byte_adder>>8);
ISP_ADDRL = (uchar)(byte_adder & 0X00FF);
ISP_CMD &= 0xf8;
ISP_CMD |= 0x02;
ISP_DATA = orginal_data;
ISPgoon();
ISP_IAP_disable();
}
#include
#define uchar unsigned char
#define uint unsigned int
sfr ISP_DATA = 0x00E2; //EEPORM数据寄存器
sfr ISP_ADDRH = 0x00E3; //地址寄存器高八位
sfr ISP_ADDRL = 0x00E4; // 地址寄存器低八位
sfr ISP_CMD = 0x00E5; //EEPORM命令寄存器
sfr ISP_TRIG = 0x00E6; //EEPROM(ISP/IAP) 命令触发寄存器
sfr ISP_CONTR = 0x00E7; //(ISP/IAP)控制寄存器
/********打开ISP,IAP功能********/
void ISP_IAP_enable(void)
{
// EA=0;
ISP_CONTR |= 0X18;
ISP_CONTR |= 0X00;
ISP_CONTR |= 0X80;
}
/********关闭ISP,IAP功能********/
void ISP_IAP_disable(void)
{
ISP_CONTR &= 0X7f;
ISP_TRIG = 0X00;
// EA=1;
}
/********公用的触发代码*********/
void ISPgoon(void)
{
ISP_IAP_enable();
ISP_TRIG = 0X46;
ISP_TRIG = 0Xb9;
_nop_();_nop_();
}
/*******读字节*****************/
uchar byte_read(uint byte_adder)
{
ISP_ADDRH = (uchar)(byte_adder>>8);
ISP_ADDRL = (uchar)(byte_adder & 0x00ff);
ISP_CMD = ISP_CMD & 0xf8;
ISP_CMD = ISP_CMD | 0X01;
ISPgoon();
ISP_IAP_disable();
return(ISP_DATA);
}
/********擦除扇区*************/
void SectorErase(uint sector_adder)
{
static uint iSector;
iSector = sector_adder & 0xfe00;
ISP_ADDRH = (uchar)(iSector>>8);
ISP_ADDRL = 0X00;
ISP_CMD &= 0XF8;
ISP_CMD |= 0X03;
ISPgoon();
ISP_IAP_disable();
}
/***********写字节***********/
void byte_write(uint byte_adder,uchar orginal_data)
{
ISP_ADDRH = (uchar)(byte_adder>>8);
ISP_ADDRL = (uchar)(byte_adder & 0X00FF);
ISP_CMD &= 0xf8;
ISP_CMD |= 0x02;
ISP_DATA = orginal_data;
ISPgoon();
ISP_IAP_disable();
}
STC单片机内部EEPROM控制寄存 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)