
PIC单片机内部EEPROM数据保存读取
#include"12864.h"__CONFIG(0x3ffa);//EEPROM写数据函数voidWriteEE(u8add,u8data){do{}while(WR...
#include"12864.h"
__CONFIG(0x3ffa);
//EEPROM写数据函数
void WriteEE(u8 add,u8 data)
{
do{}
while(WR == 1);//等待写完成
EEADR = add;//写入地址信息
EEDATA = data;//写入数据信息
EEPGD = 0;//操作EEPROM
WREN = 1; //写EEPROM允许
EECON2 = 0x55;//写入特定时序
EECON2 = 0xaa;
WR = 1; //执行写操作
do{}
while(WR == 1);//等待写完成
WREN = 0;//禁止写入EEPROM
}
//EEPROM读数据函数
u8 ReadEE(u8 add)
{
u8 d;
do{}
while(RD == 1);//等待读完成
EEADR = add;//写入要读的址址
EEPGD = 0;//操作EEPROM
RD = 1;//执行读操作
do{}
while(RD == 1);//等待读完成
d= EEDATA;
return d;//返回读取的数据
}
void main()
{
u8 d;
lcd_init();
show_string(0x80,"pic");
WriteEE(3,100);
d=ReadEE(3);
show_number(0x90,d);
while(1)
{
}
}
这个程序在液晶屏上能显示读到的数据是100;
但是我想检测断电能不能保存,我就把主程序里面的WriteEE(3,100);去掉了,第二次只读3号地址,显示读到的结果是255。难道是没保存,还是编程器把原来的EEPROM的数据擦除了? 展开
__CONFIG(0x3ffa);
//EEPROM写数据函数
void WriteEE(u8 add,u8 data)
{
do{}
while(WR == 1);//等待写完成
EEADR = add;//写入地址信息
EEDATA = data;//写入数据信息
EEPGD = 0;//操作EEPROM
WREN = 1; //写EEPROM允许
EECON2 = 0x55;//写入特定时序
EECON2 = 0xaa;
WR = 1; //执行写操作
do{}
while(WR == 1);//等待写完成
WREN = 0;//禁止写入EEPROM
}
//EEPROM读数据函数
u8 ReadEE(u8 add)
{
u8 d;
do{}
while(RD == 1);//等待读完成
EEADR = add;//写入要读的址址
EEPGD = 0;//操作EEPROM
RD = 1;//执行读操作
do{}
while(RD == 1);//等待读完成
d= EEDATA;
return d;//返回读取的数据
}
void main()
{
u8 d;
lcd_init();
show_string(0x80,"pic");
WriteEE(3,100);
d=ReadEE(3);
show_number(0x90,d);
while(1)
{
}
}
这个程序在液晶屏上能显示读到的数据是100;
但是我想检测断电能不能保存,我就把主程序里面的WriteEE(3,100);去掉了,第二次只读3号地址,显示读到的结果是255。难道是没保存,还是编程器把原来的EEPROM的数据擦除了? 展开
2个回答

2023-06-12 广告
STM32是一种由意法半导体(STMicroelectronics)公司设计和生产的单片机系列,广泛用于嵌入式系统、物联网(IoT)设备、汽车电子、工业自动化等领域。STM32具有以下优点:1. 低功耗:STM32单片机通常具有较低的功耗,...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询