STC89C51单片机单片机EEPROM读写例程读写例程
今天无意间看到STC系列芯片手册上关于片上EEPROM的介绍,狂喜。原来STC单片机本身就有EEPROM的,
可惜发现晚了点,不然很多同学的毕设上就可以省块24C02,也不用去搞那个IIC程序了。 下午花了点时间看了
资料,然后写了个例子程序,本程序在STC89C52RC上测试,运行成功。
//============================================================================
//prjname:STC89C51RC,STC89C52RC,STC89C54RD+EEPROM例程
//funtion:程序实现P0口,P1口分别驱动LED灯(低电平亮)把两个8位变量count.dat,temp.dat
//显示出来,这两个个八位约1s自增一次,且变量的值能够掉电保护
//author:viviFire
//说明:STC89C51RC,STC89C52RC的EEPROM的第一扇区起始地址为0x2000
//STC89C54RD+的EEPROM的第一扇区起始地址为0x8000,需修改本程序
//其他芯片请参考手册
//运用本程序请注明出自viviFire,
//本程序参考宏晶公司提供的STC5Axx系列EEPROM例子程序
//============================================================================
#include
#include
typedefunsignedcharINT8U;
typedefunsignedintINT16U;
sfrIAP_DATA=0xE2;
sfrIAP_ADDRH=0xE3;
sfrIAP_ADDRL=0xE4;
sfrIAP_CMD=0xE5;
sfrIAP_TRIG=0xE6;
sfrIAP_CONTR=0xE7;
//定义Flash操作等待时间及允许IAP/ISP/EEPROM操作的常数
//#defineENABLE_ISP0x80//系统工作时钟<5MHz时,对IAP_CONTR寄存器设置此值
//#defineENABLE_ISP0x81//系统工作时钟<10MHz时,对IAP_CONTR寄存器设置此值
#defineENABLE_ISP0x82//系统工作时钟<20MHz时,对IAP_CONTR寄存器设置此值
//#defineENABLE_ISP0x83//系统工作时钟<40MHz时,对IAP_CONTR寄存器设置此值
#defineDATA_FLASH_START_ADDRESS0x2000//STC89C51,STC89C52系列EEPROM测试起始地址
//------------------------------------------------------------------------------------------
INT8UByte_Read(INT16Uadd);//读一字节,调用前需打开IAP功能
voidByte_Program(INT16Uadd,INT8Uch);//字节编程,调用前需打开IAP功能
voidSector_Erase(INT16Uadd);//擦除扇区
voidIAP_Disable();//关闭IAP功能
voiddelayms(INT16Uz);
评论0
最新资源