1、在首塌毁使用EEPROM之前,需要首先确定需要存储的数据类型和格式,并计算出存储数据所需的EEPROM地址范围和长度。
2、初始化EEPROM,将EEPROM初始化为特定的状态,在使用前确保它处于可写状态者备。具体的初始化方法可以参考米思齐提供的相关文档或资料。
3、写入数据,使用编程器(Programmer)或者其他支持EEPROM编程的工具,将数据写入到指定的EEPROM地址。在写入数据时,需要注意数据的正确性和完整性,并做好相应的校验工作。
4、读取数据,使用读取器(Reader)或其他支持EEPROM读取的工具,从指定的EEPROM地址读取存储的数衫埋据。
5、擦除数据,如果需要擦除已经存储的数据,可以使用擦除器(Eraser)或其他支持EEPROM擦除的工具,将指定的EEPROM区域擦除为初始状态。
下面是我之前写的stc的程序,你可以参考下,都是差不多岩春的。#include<at89x52.h>
unsigned char data TSET1,TSET2
void eeprom_write(void) //eeprom写
unsigned char eeprom_read(void)//eeprom读
void eeprom_erase(void) //eeprom擦出
void delay(unsigned char t)//延时
void timerset(void) //延时时间的设定
sfr ISP_DATA= 0xe2 /*ISP/IAP *** 作时的数据寄存器*/
sfr ISP_ADDRH = 0xe3 /*ISP/IAP *** 作时的地址寄存器高八位*/
sfr ISP_ADDRL = 0xe4 /*ISP/IAP *** 作时的地址寄存器低八位*/
sfr ISP_CMD = 0xe5 /*ISP/IAP *** 作时的命令模式寄存器*/
sfr ISP_TRIG= 0xe6 /*ISP/IAP *** 作时的命令触发寄存器*/
sfr ISP_CONTR = 0xe7 /*ISP/IAP控制寄存器*/
/**************************************************
main主程序
***************************************************/
main()
{
unsigned char flag2=0
TSET1=10
eeprom_erase()//擦出
eeprom_write()//写
TSET2=eeprom_read()//读闭枣拦
P1_0=1//开启振动
while(1)
{
while(flag2==0)
{
timerset()
while(P3_2==1)
if(P3_2==0)
{ delay(TSET2)
P1_0=0
flag2=1
}
}
while(flag2==1)
{
timerset()
while(P3_2==0)//等待
if(P3_2==1)
{
delay(TSET2)
P1_0=1
flag2=0
}
}
}
}
/*************************************************
延时时间设定程序
*************************************************/
void timerset(void)
{
unsigned char flag3=0,a=0
if(P3_3==0)//增加
{
for(a=0a<10a++)
if(P3_3==0)
{
while(P3_3==0)
if(TSET1<20) TSET1++
flag3=1
}
}
if(P3_4==0)/轿胡/减小
{
for(a=0a<10a++)
if(P3_4==0)
{
while(P3_4==0)
if(TSET1>1) TSET1--
flag3=1
}
}
if(flag3) //设定完毕后更新EEPROM
{
eeprom_erase()//擦出
eeprom_write()//写
TSET2=eeprom_read()//读
flag3=0
}
}
/*************************************************
EEPROM写程序
*************************************************/
void eeprom_write(void)
{
unsigned char j
ISP_ADDRH=0x22//选择存放数据的高八位地址寄存器
ISP_ADDRL=0x22//选择存放数据的低八位地址寄存器
ISP_CMD=0x02//命令模式触发对flash写 ,0x01读,0x02写,0x03擦除
ISP_DATA=TSET1//存放数据
ISP_CONTR=0x9a//使能ISP、IAP,,ISPEN=1允许改变FLASH,SWBS=0程序从主程序启动,等待时间为010
ISP_TRIG=0X46//对ISP_TRIG先写0x46
ISP_TRIG=0XB9//对ISP_TRIG先写0xB9,使ISP/IAP命令生效
for(j=0j<2j++)
}
/********************************************
EEPROM读程序
********************************************/
unsigned char eeprom_read(void)
{
unsigned char j
ISP_ADDRH=0x22
ISP_ADDRL=0x22
ISP_CMD=0x01
ISP_CONTR=0x9a
ISP_TRIG=0X46
ISP_TRIG=0XB9
for(j=0j<2j++)
return(ISP_DATA)
}
/***********************************************
EEPROM擦出程序
***********************************************/
void eeprom_erase(void)
{
unsigned char j
ISP_ADDRH=0x22
ISP_ADDRL=0x22
ISP_CMD=0x03
ISP_CONTR=0x9a
ISP_TRIG=0X46
ISP_TRIG=0XB9
for(j=0j<2j++)
}
/***********************************************
延时子程序
**********************************************/
void delay(unsigned char t)
{
unsigned int i,j
while(t--)
{
for(i=0i<600i++)
for(j=0j<600j++)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)