佚名通过本文主要向大家介绍了eeprom数据丢失,eeprom数据手册,eeprom数据,avr eeprom数据丢失,如何往eeprom中写数据等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:EEPROM同一个扇区操作只能保存最后一个数据的内容。
描述:
SectorErase(0X2000);
byte_write(0x2000,1) ;
byte_write(0x2001,2) ;
整个扇区的值都是2.这是为什么,求解。
附程序,源自网络。
void byte_write(uint byte_addr,uchar data)
{
ISP_ADDRH=(uchar)(byte_addr>>8);
ISP_ADDRL=(uchar)(byte_addr&0x00ff);
ISP_CMD=ISP_CMD&0xf8;
ISP_CMD=ISP_CMD|0x02;
ISP_DATA=data;
ISP_IAP_enable();
ISP_TRIG = 0x46;
ISP_TRIG = 0xb9;
_nop_();
ISP_IAP_disable();
}
解决方案1:
描述:
本帖最后由 u010187927 于 2013-08-08 17:56:51 编辑
单片机
当我操作EEPROM时,即使写一个字节,整个扇区就都变成这个字节的内容,我同时赋值保存到EEPROM,例如SectorErase(0X2000);
byte_write(0x2000,1) ;
byte_write(0x2001,2) ;
整个扇区的值都是2.这是为什么,求解。
附程序,源自网络。
void byte_write(uint byte_addr,uchar data)
{
ISP_ADDRH=(uchar)(byte_addr>>8);
ISP_ADDRL=(uchar)(byte_addr&0x00ff);
ISP_CMD=ISP_CMD&0xf8;
ISP_CMD=ISP_CMD|0x02;
ISP_DATA=data;
ISP_IAP_enable();
ISP_TRIG = 0x46;
ISP_TRIG = 0xb9;
_nop_();
ISP_IAP_disable();
}
解决方案1:
把你的CMD全部发出来看看
ISP_CMD=ISP_CMD|0x02;
02是什么CMD,别是块写入!
可能你是STC89C53芯片可能不带EEPROM
解决方案3:用 寄存器操作试试
解决方案4:跟我平时写的程序有点不大一样,你是不是有涉及到操作系统呀?