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个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询