都是直接包含的eeprom。h文件的
void
eeprom_write_byte (uint8_t *addr,uint8_t value)
{
__asm__ __volatile__ (
"mov __tmp_reg__,%1" CR_TAB
XCALL " __eeprom_write_byte_" _REG_LOCATION_SUFFIX
: "+x" (addr)
: "r" (value)
: "memory"
);
}
for(i=1;i<10;i++)
{
eeprom_write_byte(i,eeprom_data[i]);
delay(100,11059);//延时10毫秒
}
为什么有时候有个别的字写不上去,重写可能就会好了,问题出在哪里呢?
读问题倒是不大
for(i=1;i<10;i++)
{
eeprom_data[i]=eeprom_read_byte(i);
delay(100,11059);//延时10毫秒
}
uint8_t
eeprom_read_byte (const uint8_t *addr)
{
uint8_t result;
__asm__ __volatile__
( XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
"mov %1,__tmp_reg__"
: "+x" (addr),
"=r" (result)
: );
return result;
} |