单片机 > 单片机程序设计 > 详情

STC89C52内部的EEPROM

发布时间:2020-09-03 发布时间:
|
STC89C52内部自带了4K大小的EEPROM,地址是从2000H~2FFFH。写操作主要是编程和擦除。如果某个字节是“1111,1111B” ,则可将其中的“1”编程为“0” ,如果该字节中有位为“0” ,则须先将整个扇区擦除,因为只有“扇区擦除”才可以将“0”变为“1”。因此我们说,这不是真正意义上的EEPROM,称之为Data Flash更为合理。

 

几个相关的功能寄存器:


以下是几个操作函数,供大家参考:

void ISP_Enable()
{
 EA_S=EA;
 EA=0;
 ISP_CONTR=0x82; 
}

void ISP_Disable()
{
 ISP_CONTR=0;
 ISP_CMD=0;
 ISP_TRIG=0;
 ISP_ADDRH=0xff;
 ISP_ADDRL=0xff;
 EA=EA_S; 
}

void STC_EEPROM_Erase(uint addr)
{//擦除
 ISP_ADDRL=addr&0x00ff;
 ISP_ADDRH=addr>>8;
 ISP_Enable();
 ISP_CMD=ISP_ERASE;
 ISP_TRIG=ISP_TRIG0;
 ISP_TRIG=ISP_TRIG1;
 _nop_();
 ISP_Disable();
}

void STC_EEPROM_Write(uint addr,uchar dat)
{
 ISP_DATA=dat;
 ISP_ADDRL=addr&0x00ff;
 ISP_ADDRH=addr>>8;
 ISP_Enable();
 ISP_CMD=ISP_PROGRAM;
 ISP_TRIG=ISP_TRIG0;
 ISP_TRIG=ISP_TRIG1;
 _nop_();
 ISP_Disable();  
}

uchar STC_EEPROM_Read(uint addr)
{
 ISP_ADDRL=addr&0x00ff;
 ISP_ADDRH=addr>>8;
 ISP_Enable();
 ISP_CMD=ISP_READ;
 ISP_TRIG=ISP_TRIG0;
 ISP_TRIG=ISP_TRIG1;
 _nop_();
 ISP_Disable();
 return(ISP_DATA);
}

关键字:STC89C52 EEPROM 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二